状态机 java_初试SpringStateMachine框架实现状态机

本文介绍了如何使用SpringStateMachine框架创建一个简单的订单状态机。通过添加相关依赖,定义订单状态和事件,配置状态机的动作及状态迁移,展示了状态机从待支付到收货的流程。此外,还提到了SpringStateMachine的更多可用模块,鼓励读者进一步探索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ab4bd35336d96b5520165304b5309800.png

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

状态机

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

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

写一个demo

cf14ab5bb10947204e0e155aec5b5a7d.png

在pom.xml中加入依赖:

7f40fd15205135fe70d29d7e6e294ee7.png

定义订单状态

4871a2ed34370f32672cfd8b82439041.png

订单事件:

0ee87911ab948a03676844131e5dd21c.png

然后写一个配置类:

ac90221462690ae7510eeae311492989.png

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

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

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

然后写个 Application 类:

41def4d570dfc9a75c236335cc84f6e0.png

日志输出:

409eab8270f3446acfeb59f0b0ba3cae.png

在run函数中,我们定义了整个流程的处理过程,其中start()就是创建这个订单流程,根据之前的定义,该订单会处于待支付状态,然后通过调用sendEvent(Events.PAY)执行支付操作,最后通过掉用sendEvent(Events.RECEIVE)来完成收货操作。

有以下模块可供选择使用

d9f817449b127fcd2c5c42db3e4893fc.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值