找回密码
 立即注册
首页 业界区 业界 Solon Flow v3.4.0 轻量级流程编排框架

Solon Flow v3.4.0 轻量级流程编排框架

毁抨句 2025-7-18 08:32:47
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 描述连接关系)。配置简洁,关系清晰
  1. # c1.yml
  2. id: "c1"
  3. layout:
  4.   - { id: "n1", type: "start", link: "n2"}
  5.   - { id: "n2", type: "activity", link: "n3"}
  6.   - { id: "n3", type: "end"}
复制代码
还支持简化模式(能自动推断的,都会自动处理),具体参考相关说明
  1. # c1.yml
  2. id: "c1"
  3. layout:
  4.   - { type: "start"}
  5.   - { task: ""}
  6.   - { 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()

相关推荐

您需要登录后才可以回帖 登录 | 立即注册