初试SpringStateMachine框架实现状态机

官网:https://projects.spring.io/spring-statemachine/html

官网这里列出了不少特性,说的就是易于使用的状态机,帮助开发者简化状态机的开发过程,让状态机结构更加层次化。spring

状态机api

有限状态机(FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动做等行为的数学模型。 函数

状态存储关于过去的信息,就是说:它反映从系统开始到如今时刻的输入变化。转移指示状态变动,而且用必须知足来确使转移发生的条件来描述它。动做是在给定时刻要进行的活动的描述。3d

写一个demo日志

在pom.xml中加入依赖:code

定义订单状态xml

订单事件:htm

而后写一个配置类:blog

@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还有不少内容,之后再续!

有什么讨论的内容,能够加我公众号:

相关文章
相关标签/搜索