有限状态机 State Machine
二、状态机概念
StateMachine<S,E> 参数
- StateMachine<States, Events>
- StateMachine 状态机模型
- States:S-状态,如:创建,待收货,待支付等
- Events: E-事件,如:支付,收货
注入的参数
- Transition: 节点,是组成状态机引擎的核心
- source:节点的当前状态
- target:节点的目标状态
- event:触发节点从当前状态到目标状态的动作
- guard:起校验功能,一般用于校验是否可以执行后续action
- action:用于实现当前节点对应的业务逻辑处理
builder.configureTransitions()
.withExternal() //表示source target两种状态不同
.source(OrderStateEnum.UNPAID) //当前节点状态
.target(OrderStateEnum.WAITING_FOR_RECEIVE) //目标节点状态,这里是设置了个中间状态
.event(OrderEvents.PAY) //导致当前变化的动作/事件
.and()
.withExternal()
.source(OrderStateEnum.WAITING_FOR_RECEIVE)
.target(OrderStateEnum.DONE)
.event(OrderEvents.RECEIVE)
.action(orderCreateAction, errorHandlerAction) //执行当前状态变更导致的业务逻辑处理,以及出异常时的处理
- 包含guard的情况
.and() // 使用and串联
.withChoice() // 使用choice来做选择
.source(OrderStateEnum.WAITING_FOR_RECEIVE) // 当前状态
.first(State1, needAuthGuard(), needAuthAction) // 第一个分支
.last(State2, waitBorrowAction) // 第二个分支
Featured Tags
工具类
XML
JAVA
Java
Mybatis
反射
代理模式
日志
工厂方法模式
装饰器模式
结果集映射
Web
RESTful
WebAPI规范
SQL
Redis
Jira
SynapseRT
有限状态机 State Machine
statemachine
SpringBoot
IDEA
Tomcat
Vue
Docker
Springboot
Apache Ignite
项目发布与调试
白帽子讲web安全
黑名单
通用化
企业中台实践
MacOS
docker
minio
springboot
分布式存储
Postgres
数据备份
数据恢复
K8S
抖音小程序
开发实践
SpringCloud
Skywalking
Nacos
Kubernetes
Secret
ConfigMap
Git
GitOps
云原生
RocketMQ
ActiveMQ-Artemis
ClickHouse
Kamailio
sipp
Homer
heplify
heplify-server
HEP