官网:https://projects.spring.io/spring-statemachine/
官网这里列出了很多特性,说的就是易于使用的状态机,帮助开发者简化状态机的开发过程,让状态机结构更加层次化。
状态机
有限状态机(FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。
写一个demo
在pom.xml中加入依赖:
定义订单状态
订单事件:
然后写一个配置类:
@EnableStateMachine
注解用来启用Spring StateMachine状态机功能
configure(StateMachineStateConfigurer<States, Events> states)
方法用来初始化当前状态机拥有哪些状态
configure(StateMachineTransitionConfigurer<States, Events> transitions)
方法用来初始化当前状态机有哪些状态迁移动作,其中命名中我们很容易理解每一个迁移动作,都有来源状态source
,目标状态target
以及触发事件event
。
然后写个 Application 类:
日志输出:
在run
函数中,我们定义了整个流程的处理过程,其中start()
就是创建这个订单流程,根据之前的定义,该订单会处于待支付状态,然后通过调用sendEvent(Events.PAY)
执行支付操作,最后通过掉用sendEvent(Events.RECEIVE)
来完成收货操作。
文档地址(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/reference/htmlsingle/)
Api(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/api/)
有以下模块可供选择使用
这只是根据文档尝试一下,statemachine还有很多内容,以后再续!
有什么讨论的内容,可以加我公众号: