fa-kernel-lsm状态机学习之路

634 阅读2分钟

一、状态机定义

有限状态机(英语:finite-state machine,缩写:FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。应用FSM模型可以帮助对象生命周期的状态的顺序以及导致状态变化的事件进行管理。将状态和事件控制从不同的业务Service方法的if else中抽离出来。FSM的应用范围很广,对于有复杂状态流,扩展性要求比较高的场景都可以使用该模型。

二、状态机框架技术简介

1. Spring-statemachine

2. squirrel-foundation

3. stateless4j

squirrel-foundation,stateless4j相对spring-statemachine更加轻量级。

下面是状态机模型中的4个要素,即现态、条件、动作、次态。

现态:是指当前所处的状态。

条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

开门流程:


订单流程:


本文主要着重讲解下公司自己研发的一款状态机:fa-kernel-lsm。

三、状态机的定义

1. STATE(状态)定义

state的定义只需要实现State接口(getCode() 返回的值在一个状态机里要具有唯一性),下面是以枚举的方式定义的state,当然也可以通过定义c lass的方式定义state。因为state不会涉及到逻辑,所以建议以枚举的形式定义状态。