场景
某些任务存在多个不同的状态,需要实现状态间的流转,逻辑较为复杂,直接套用流程引擎(不是专做流程管理的系统不必要这么重)又没有必要,所以需要自己实现一个简单的状态流转
什么是状态机?
-
状态机全称有限状态机,因为一般的状态机的状态都是离散而且可枚举的,这就是有限的原因。
-
状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
-
通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态变化可以被感知。
-
一般包含以下几个概念:
- 状态
- 事件 状态机的状态变更肯定是通过触发一个事件引起的
- 行为 触发了之后执行的业务逻辑。比如说订单未支付状态到支付状态的变更需要走的业务,写流水、修改账户余额等
- 变更 一个状态被一个事件触发执行了某些行为到达了另外一个状态的过程
-
图解: