当前位置: 首页 > news >正文

状态流程框架(cola-component-statemachine)

maven依赖

        <dependency><groupId>com.alibaba.cola</groupId><artifactId>cola-component-statemachine</artifactId><version>4.3.2</version></dependency>

示例

        String ORDER_STATE_MACHINE = "orderStateMachine";// 第一步:生成一个状态机builderStateMachineBuilder<StatusEnum, EventEnum, DataContext> builder = StateMachineBuilderFactory.create();// 第二步:定义状态// 外部流转,状态从 A 到 B 执行 OPERATE1 事件,当满足checkCondition()的时候执行doAction(),成功返回状态B,否则返回状态Abuilder.externalTransition() // 外部流转.from(StatusEnum.A)  // 起始状态.to(StatusEnum.B)  // 目标状态.on(EventEnum.OPERATE1)  // 事件.when(checkCondition()) // 流转需要校验的条件,校验不通过不会进行doAction.perform(doAction());  //执行流转操作 这个action 我们可以按自己所需修改// 内部流转,在 A 状态下,执行 OPERATE1 事件,当满足checkCondition()时,执行doAction,执行成功则返回状态 Abuilder.internalTransition().within(StatusEnum.A).on(EventEnum.OPERATE1).when(checkCondition()).perform(doAction());// 外部流转(多初始状态),状态从 A或B 到 C 执行 OPERATE1 事件,当满足checkCondition()的时候执行doAction(),成功返回状态C,否则返回原初始状态builder.externalTransitions().fromAmong(StatusEnum.A, StatusEnum.B).to(StatusEnum.C).on(EventEnum.OPERATE1).when(checkCondition()).perform(doAction());// 创建状态机StateMachine<StatusEnum, EventEnum, DataContext> orderStateMachine = builder.build(ORDER_STATE_MACHINE);//状态流转,当前状态 A,执行 OPERATE1 操作,DataContext为传递的数据orderStateMachine.fireEvent(StatusEnum.A, EventEnum.OPERATE1,new DataContext());

StateMachineBuilderFactory相关API

create()                                        创建状态机构造器对象(StateMachineBuilder)

StateMachineBuilder<S, E, C> 相关API

三个泛型(状态枚举、事件枚举、流转数据对象)
externalTransition()                            创建一个外部流转的构建器(ExternalTransitionBuilder)
externalTransitions()                           创建多个外部流转的构建器(ExternalTransitionsBuilder)
internalTransition()                            创建内部流转的构建器(InternalTransitionBuilder)
setFailCallback(FailCallback<S, E, C> var1)     配置失败回处理逻辑
build(String var1)                              对状态机开始构建(StateMachine),并在StateMachineFactory中注册

StateMachine<S, E, C> 相关API

verify(S var1, E var2)                          验证一个事件E是否可以从当前状态S触发
fireEvent(S var1, E var2, C var3)               向状态机发送一个事件E,触发状态机,并返回目标状态
getMachineId()                                  获取状态机的标识符MachineId
showStateMachine()                              显示状态机的结构
generatePlantUML()                              获取状态流程的 PlantUML 字符串

StateMachineFactory 相关API

register(StateMachine<S, E, C> stateMachine)    注册状态机
get(String machineId)                           获取状态机

ExternalTransitionBuilder 相关API

from(S var1)                                   设置起始状态

ExternalTransitionsBuilder 相关API

fromAmong(S... var1)                           设置起始状态(多值)

InternalTransitionBuilder 相关API

within(S var1)                                  设置当前状态

From<S, E, C> 相关API

to(S var1)                                      设置目标状态

To<S, E, C> 相关API

on(E var1)                                      设置事件

On<S, E, C> 相关API

when(Condition<C> var1)                         设置流转需要校验的条件

When<S, E, C> 相关API

perform(Action<S, E, C> var1)                   设置流转的业务流程
http://www.lryc.cn/news/622420.html

相关文章:

  • WinForm 简单用户登录记录器实现教程
  • 五、ZooKeeper、Kafka、Hadoop、HBase、Spark、Flink集群化软件的部署
  • Sui 主网升级至 V1.53.2
  • 【DDIA】第三部分:衍生数据
  • 俄罗斯信封套娃问题-二维最长递增子序列
  • day29-进程和线程(2)
  • python自学笔记9 Seaborn可视化
  • 47.分布式事务理论
  • Elasticsearch:使用 Gradio 来创建一个简单的 RAG 应用界面
  • LeetCode刷题记录----236.二叉树的最近公共节点(medium)
  • 终极手撸cpu系列-详解底层原理-CPU硬核解剖:从0和1到 看透CPU逻辑设计内部原理,弄清楚现代多线程cpu工作原理
  • IC(Integrated Circuit,集成电路)是什么?
  • Qt——常用Widget(控件)
  • 数据结构初阶(17)排序算法——非比较排序、排序算法总结
  • Git、JSON、MQTT
  • 【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式
  • 混凝土抗压强度预测:基于机器学习的全流程实战解析​
  • flume实战:从零配置到启动运行的完整指南
  • 【嵌入式C语言】五
  • 模型输出参数和量化参数一文详解!!
  • Eclipse:关闭项目
  • 腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)
  • 【LeetCode 热题 100】121. 买卖股票的最佳时机
  • OpenZeppelin Contracts 架构分层分析
  • 再回C的进制转换--负数
  • python的美食交流社区系统
  • 【Spring Cloud 微服务】1.Hystrix断路器
  • 两幅美国国旗版权挂钩专利发起跨境诉讼
  • 列式存储与行式存储:核心区别、优缺点及代表数据库
  • Spring Boot 静态函数无法自动注入 Bean?深入解析与解决方案