初试SpringStateMachine框架实现状态机

本文介绍如何使用Spring State Machine实现订单状态机,通过定义订单状态、事件及配置类,展示了一个从待支付到收货的订单流程。文章包含状态机概念解释、Spring State Machine配置示例及日志输出。
摘要由CSDN通过智能技术生成

官网: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还有很多内容,以后再续!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值