本教程基于spring-statemachine 2.0.0.RELEASE版本。
Spring Statemachine 是使用 Spring框架下的状态机概念创建的一种应用程序开发框架。它使得状态机结构层次化,简化了配置状态机的过程。
- spring-statemachine-core
- spring-statemachine-recipes-common
- spring-statemachine-kryo
- spring-statemachine-data-common
- spring-statemachine-data-jpa
- spring-statemachine-data-redis
- spring-statemachine-data-mongodb
- spring-statemachine-zookeeper
- spring-statemachine-test
- spring-statemachine-cluster
- spring-statemachine-uml
- spring-statemachine-autoconfigure
- spring-statemachine-bom
- spring-statemachine-starter
- 有简单的教程以供快速入门。
- 具有简便的方式配置多层次结构复杂的状态机。
- 可以灵活地配置状态区。
- 提供触发器、状态转移器、保护机制、状态转移动作和状态机事件监听器。
- 类型安全的配置适配器。
- 在spring应用中具有简便的创建模式。
- 多种通用的用例。
- 可基于Zookeeper实现分布式状态机。
- 与spring ioc整合。
下列情况适合使用状态机:
- 应用或者其一部分可以用状态表示。
- 希望将复杂的逻辑拆分,获得更清晰更简单的逻辑。
- 应用遇到并发问题,即异步导致的问题。
初步尝试适用状态机:
- 使用布尔标志和枚举建立状态模型
- 仅使用在应用生命周期内具有意义的状态。
- 使用有限的状态,每种状态或状态的组合都有意义和相应的处理方法。
-
State Machine
状态机,将状态结合、转移、事件整合到一起的机器 -
State
一个不变的状态模型
主要由一个事件修改实体的状态 -
Extended State
扩展状态是一组特殊的变量保存在一个状态机中,可以保存业务数据。 -
Transition
源状态和目标状态之间的关系,它可能是复合过度的一部分,它规定在一个特定的事件发生时某个状态转移的情况。 -
Event
事件,驱动状态转移的实体。 -
Initial State
初始状态 -
End State
终态 -
History State
记录状态机最后的活动状态,存在两种模式 -
Choice State
状态转移选择,相当于if/else -
Fork State
状态分支 -
Join State
状态合并 -
Region
区域,一个父状态与数个子状态组成的状态区 -
guard
状态保护机制,对一个状态转移进行评估,评估值为true允许状态转移,评估值为false禁止转移 -
Action
状态转移动作,在转移进行的时候触发的动作