您现在的位置是:首页 > 文章详情

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

日期:2025-07-18点击:28

Solon Flow 是一个轻量级流程编排框架(采用 yaml 或 json 偏平式编排格式)

  • 支持无状态流程
    • 可用于计算(或任务)的编排场景
    • 可用于业务规则和决策处理型的编排场景
  • 支持有状态流程
    • 可用于办公审批型(有状态、可中断,人员参与)的编排场景
    • 可用于长时间流程(结合自动前进,等待介入)的编排场景

有可视化的设计器:

嵌入第三方框架的示例:

同时兼容 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() 方法

方法名称调整:

旧方法 新方法  
getActivityNodes getTasks  
getActivityNode getTask  
     
postActivityStateIfWaiting postOperationIfWaiting  
postActivityState postOperation  

状态类型拆解后的对应关系(之前状态与操作混一起,不合理)

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、表达式与脚本自由

 # c2.yml id: "c2" layout: - { type: "start"} - { when: "order.getAmount() >= 100", task: "order.setScore(0);"} - { when: "order.getAmount() > 100 && order.getAmount() <= 500", task: "order.setScore(100);"} - { when: "order.getAmount() > 500 && order.getAmount() <= 1000", task: "order.setScore(500);"} - { type: "end"} 

3、元数据配置,为扩展提供了无限空间

元数据主要有两个作用:(1)为任务运行提供配置支持(2)为视图编辑提供配置支持

 # c3.yml id: "c3" layout: - { id: "n1", type: "start", link: "n2"} - { id: "n2", type: "activity", link: "n3", meta: {cc: "demo@noear.org"}, task: "@MetaProcessCom"} - { id: "n3", type: "end"} 

通过组件方式,实现元数据的抄送配置效果

 @Component("MetaProcessCom") public class MetaProcessCom implements TaskComponent { @Override public void run(FlowContext context, Node node) throws Throwable { String cc = node.getMeta("cc"); if(Utils.isNotEmpty(cc)){ //发送邮件... } } } 

4、事件广播与回调支持

广播(即只需要发送),回调(即发送后要求给答复)

 id: f4 layout: - task: | //只发送 context.<String,String>eventBus().send("demo.topic", "hello"); //支持泛型(类型按需指定,不指定时为 object)  - task: | //发送并要求响应(就是要给答复) String rst = context.<String,String>eventBus().sendAndRequest("demo.topic.get", "hello"); System.out.println(rst); 

5、支持无状态、有状态两种应用

支持丰富的应用场景:

  • 无状态流程
    • 可用于计算(或任务)的编排场景
    • 可用于业务规则和决策处理型的编排场景
  • 有状态流程
    • 可用于办公审批型(有状态、可中断,人员参与)的编排场景
    • 可用于长时间流程(结合自动前进,等待介入)的编排场景

自身也相当于一个低代码的运行引擎(单个配置文件,也可满足所有的执行需求)。

6、驱动定制(是像 JDBC 有 MySql, PostgreSQL,还可能有 Elasticsearch)

这是一个定制后的,支持基于有状态驱动的流程引擎效果(比如支持行政审批)。

 FlowEngine flowEngine = FlowEngine.newInstance(StatefulSimpleFlowDriver.builder() .stateOperator(new MetaStateOperator("actor")) .stateRepository(new InMemoryStateRepository()) .build()); FlowStatefulService statefulService = flowEngine.statefulService(); var context = new FlowContext("i1").put("actor", "陈鑫"); //获取上下文用户的任务 var task = statefulService.getTask("f1", context); assert "step2".equals(task.getNode().getId()); assert StateType.UNKNOWN == task.getState(); //没有权限启动任务(因为没有配置操作员) //提交操作 statefulService.postOperation(context, task.getNode(), Operation.COMPLETED); 

流程配置样例:

 id: f1 layout: - {id: step1, title: "发起审批", type: "start"} - {id: step2, title: "抄送", meta: {cc: "吕方"}, task: "@OaMetaProcessCom"} - {id: step3, title: "审批", meta: {actor: "陈鑫", cc: "吕方"}, task: "@OaMetaProcessCom"} - {id: step4, title: "审批", type: "parallel", link: [step4_1, step4_2]} - {id: step4_1, meta: {actor: "陈宇"}, link: step4_end} - {id: step4_2, meta: {actor: "吕方"}, link: step4_end} - {id: step4_end, type: "parallel"} - {id: step5, title: "抄送", meta: {cc: "吕方"}, task: "@OaMetaProcessCom"} - {id: step6, title: "结束", type: "end"} 

对于驱动器的定制,我们还可以:定制(或选择)不同的脚本执行器、组件容器实现等。

原文链接:https://www.oschina.net/news/360949/solon-flow-3-4-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章