Solon Flow 是一个轻量级流程编排框架(采用 yaml 或 json 偏平式编排格式)
- 支持无状态流程
- 可用于计算(或任务)的编排场景
- 可用于业务规则和决策处理型的编排场景
- 支持有状态流程
- 可用于办公审批型(有状态、可中断,人员参与)的编排场景
- 可用于长时间流程(结合自动前进,等待介入)的编排场景
有可视化的设计器:
- https://solon.noear.org/flow/designer/
嵌入第三方框架的示例:
- https://gitee.com/solonlab/solon-flow-embedded-examples
- https://gitcode.com/solonlab/solon-flow-embedded-examples
- https://github.com/solonlab/solon-flow-embedded-examples
同时兼容 java8 ~ java24。也可嵌入到 SpringBoot、jFinal、Vert.x 等框架中使用。
一、最近更新了什么?
- 调整 solon-flow stateful 相关概念(提交活动状态,改为提交操作)
- 调整 solon-flow StateType 拆分为:StateType 和 Operation
- 调整 solon-flow StatefulFlowEngine:postActivityState 更名为 postOperation
- 调整 solon-flow StatefulFlowEngine:postActivityStateIfWaiting 更名为 postOperationIfWaiting
- 调整 solon-flow StatefulFlowEngine:getActivity 更名为 getTask
- 调整 solon-flow StatefulFlowEngine:getActivitys 更名为 getTasks
- 调整 solon-flow StatefulFlowEngine 更名为 FlowStatefulService(确保引擎的单一性)
- 添加 solon-flow FlowStatefulService 接口,替换 StatefulFlowEngine(确保引擎的单一性)
- 添加 solon-flow FlowEngine:statefulService() 方法
- 添加 solon-flow FlowEngine:getDriverAs() 方法
方法名称调整:
旧方法新方法getActivityNodesgetTasksgetActivityNodegetTaskpostActivityStateIfWaitingpostOperationIfWaitingpostActivityStatepostOperation状态类型拆解后的对应关系(之前状态与操作混一起,不合理)
StateType(旧)StateType(新)Operation(新)UNKNOWN(0)UNKNOWN(0)UNKNOWN(0)WAITING(1001)WAITING(1001)BACK(1001)COMPLETED(1002)COMPLETED(1002)FORWARD(1002)TERMINATED(1003)TERMINATED(1003)TERMINATED(1003)RETURNED(1004)BACK(1001)RESTART(1005)RESTART(1004)二、特色展示
1、采用 yaml 或 json 偏平式编排格式
偏平式编排,没有深度结构(所有节点平铺,使用 link 描述连接关系)。配置简洁,关系清晰- # c1.yml
- id: "c1"
- layout:
- - { id: "n1", type: "start", link: "n2"}
- - { id: "n2", type: "activity", link: "n3"}
- - { id: "n3", type: "end"}
复制代码 还支持简化模式(能自动推断的,都会自动处理),具体参考相关说明- # c1.yml
- id: "c1"
- layout:
- - { type: "start"}
- - { task: ""}
- - { type: "end"}
复制代码 2、表达式与脚本自由
[code]# c2.ymlid: "c2"layout: - { type: "start"} - { when: "order.getAmount() >= 100", task: "order.setScore(0);"} - { when: "order.getAmount() > 100 && order.getAmount() 500 && order.getAmount() |