状态机的介绍和使用 (状态机原理)
本文目录导航:
状态机的介绍和使用
一、状态机简介状态机,简称有限状态自动机,是现实事物运行规则抽象的一个数学模型。
一个状态机至少包含两个状态,如自动门的open和closed。
状态机的四大概念包括状态、事件、动作和变换。
事件触发状态变化,动作执行事件后的操作。
二、DSLDSL是一种针对特定领域的语言,提供清晰的沟通方式,便于理解、修改代码。
内部DSL是一种特定用法的通用语言,如状态机的实现。
外部DSL与宿主语言不同,采用自定义语法,如plantUML。
Workbench是DSL的可视化形态,实现配置化。
三、状态机实现调研Spring Statemachine是用于在Spring应用程序中使用状态机概念的框架,提供如papyrus的Eclipse Plugin、配置、定义、事件、状态扩展等功能。
四、状态机DEMOSpring状态机示例包括构造状态机、状态机状态监听器、配置、接口示例等。
COLA状态机示例展示了运输需求单状态流转。
五、状态机对比选择状态机组件时,若直接使用组件库,Spring状态机是合适的选择。
若希望逐步定制化,满足特定业务需求,推荐使用COLA状态机。
六、iTMS使用状态机计划iTMS计划渐进式采用COLA状态机组件,先轻量级使用,随后基于DDD和CQRS设计模式,封装命令,使用状态机进行业务流转。

状态机两种写法
有限状态机(FSM)在硬件电路设计和软件处理中都扮演着重要角色,尤其在软件中,它被称为有限消息机(FMM)。
FSM通过将复杂的逻辑分解为有限个稳定状态,实现了从连续处理到离散数字处理的转变,这符合计算机的工作原理。
尽管它基于有限状态,但在实际应用中,它可以处理无穷的事务,形成闭环系统。
有限状态机的工作原理如图1所示:当事件(event)发生时,根据当前状态(cur_state),决定执行(action)并设置下一个状态(nxt_state)。
例如,图2是一个简单的状态机实例,它展示了状态转移的过程:在状态s0中,如果遇到e0,执行a0并保持状态;e1导致状态转移至s1,执行a1;同样,e2则执行a2并转移到s2。
有限状态机的表示方法多样,既可以使用状态转移图,也可以用二维表格,如表1所示。
在C代码实现上,有两种主要的写法。
第一种是“竖着写”(在状态中判断事件),如示例中的switch语句,逐个检查当前状态下的事件。
另一种是“横着写”(在事件中判断状态),通过为每个事件编写独立的函数,这些函数会根据接收到的当前状态来决定下一步操作。
有限状态机与状态机有什么不同?
主要区别是,性质不同、表示为状态图不同、输入反应不同、使用安全性不同,具体如下:
一、性质不同
1、摩尔型有限状态机
在计算理论中,摩尔机器有限状态机,其输出值仅由其当前状态确定。
2、米利型有限状态机
在计算理论中,米利型有限状态机是基于它的当前状态和输入生成输出的有限状态自动机(更精确的叫有限状态变换器)。
这意味着它的状态图将为每个转移边包括输入和输出二者。
二、表示为状态图不同
1、摩尔型有限状态机
每个节点(状态)都标有输出值。
2、米利型有限状态机
每个弧(过渡)都标有输出值。
三、输入反应不同
1、摩尔型有限状态机
可能需要更多逻辑来将状态解码为输出 , 在时钟边沿之后更多的门延迟。
2、米利型有限状态机
机器对输入的反应更快,在相同的周期内反应 ,不需要等待时钟。
四、使用安全性不同
1、摩尔型有限状态机
摩尔机器使用更安全,输出在时钟边沿变化(总是在一个周期后)。
2、米利型有限状态机
输入更改可能会在逻辑完成后立即导致输出更改,当两台机器互连时出现大问题,如果不小心,可能会发生异步反馈。