FSM 定义

总的来说,有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。

FSM 要素

State(状态)

State(“状态”),就是一个系统在其生命周期中某一时刻的运行情况,此时,系统会执行一些动作,或者等待一些外部输入。

Guard(条件)

状态机对外部消息进行响应的时候,除了需要判断当前的状态,还要判断
跟这个状态相关的一些条件是否成立。这种判断称为guard(“条件”)。guard
通过允许或者禁止某些操作来影响状态机的行为。

Event(事件)

Event(“事件”),就是在一定的时间和空间上发生的对系统有意义的事情。

Action(动作)

当一个Event被状态机系统分发的时候,状态机用Action(“动作”)来进行响应,比如修改一下变量的值、进行输入输出、产生另外一个Event或者迁移到另外一个状态等等。

Transition(迁移)

从一个状态切换到另一个状态被称为Transition(“迁移”)。引起状态迁移的事件被称为triggering event ( “触发事件” ) , 或者被简称为trigger ( “触发”)。

FSM 图示

Transition用箭头来表示,箭头上会写上Event的名字,可选的后面可以加上“[guard]”或者“/action”。说明,Initial Transition(“初始状态迁移”)用实心的圆形和箭头来表示。

Initial Transition就是FSM实例启动的时候的最初状态。每个状态机都应该有这么一个initial transition,其箭头上不应该有Event,因为这个迁移不是由事件触发的,但是箭头上可以写action,比如初始化一些变量或者初始化硬件等等。

Final Transition(“最终状态迁移”)用圆圈实心圆和箭头表示,其
意义是FSM实例生命周期的结束。

Internal Transition(“内部状态迁移”)用从自己出发并指向自己的
箭头表示,其意义是事件只引起内部动作,不引起状态迁移

也可以用另一种 UML 的画法。在这种画法中用圆角矩形框加一条横线表示 state, 矩形框内横线上面写明 state 名字,横线下面写 internal-transition。