初试SpringStateMachine框架实现状态机

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

初试SpringStateMachine框架实现状态机_第1张图片

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

状态机

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

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

写一个demo

初试SpringStateMachine框架实现状态机_第2张图片

在pom.xml中加入依赖:

初试SpringStateMachine框架实现状态机_第3张图片

定义订单状态

初试SpringStateMachine框架实现状态机_第4张图片

订单事件:

初试SpringStateMachine框架实现状态机_第5张图片

然后写一个配置类:

初试SpringStateMachine框架实现状态机_第6张图片

@EnableStateMachine注解用来启用Spring StateMachine状态机功能

configure(StateMachineStateConfigurer states)方法用来初始化当前状态机拥有哪些状态

configure(StateMachineTransitionConfigurer transitions)方法用来初始化当前状态机有哪些状态迁移动作,其中命名中我们很容易理解每一个迁移动作,都有来源状态source,目标状态target以及触发事件event

然后写个 Application 类:

初试SpringStateMachine框架实现状态机_第7张图片

日志输出:

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/)

有以下模块可供选择使用

初试SpringStateMachine框架实现状态机_第8张图片

这只是根据文档尝试一下,statemachine还有很多内容,以后再续!

有什么讨论的内容,可以加我公众号:

你可能感兴趣的:(spring,boot)