news 2026/4/16 19:59:38

通用流程编排框架,Solon Flow v3.8.0 隆重发布

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通用流程编排框架,Solon Flow v3.8.0 隆重发布

面向全场景的 Java 通用流程编排框架。同时兼容 java8 ~ java25,是 OpenSolon 的重要组成部分。支持已知流程编排的各种场景:

  • 可用于计算(或任务)的编排场景
  • 可用于业务规则和决策处理型的编排场景
  • 可用于可中断、可恢复流程(结合自动前进,停止,再执行)的编排场景

可视化设计器:

  • https://solon.noear.org/flow/designer/
  • 第三方开源(已组件化):https://gitee.com/opensolon/solon-flow-bpmn-designer

嵌入第三方框架(SpringBoot、jFinal、Vert.X、Quarkus、Micronaut 等)的示例:

  • https://gitee.com/solonlab/solon-flow-embedded-examples
  • https://gitcode.com/solonlab/solon-flow-embedded-examples
  • https://github.com/solonlab/solon-flow-embedded-examples

一、最近更新了什么?

重要变化:

  • 第六次预览
  • 取消“有状态”、“无状态”概念。
  • solon-flow 回归通用流程引擎(分离“有状态”的概念)。
  • 新增 solon-flow-workflow 为工作流性质的封装(未来可能会有 dataflow 等)。

具体更新:

  • 插件solon-flow第六次预览
  • 新增solon-flow-workflow插件(替代 FlowStatefulService)
  • 添加solon-flowFlowContext:lastNode() 方法(最后一个运行的节点)
  • 添加solon-flowFlowContext:lastNodeId() 方法(最后一个运行的节点Id)
  • 添加solon-flowNode.getMetaAs, Link.getMetaAs 方法
  • 添加solon-flowNodeSpec:linkRemove 方法(增强修改能力)
  • 添加solon-flowGraph:create(id,title,consumer) 方法
  • 添加solon-flowGraph:copy(graph,consumer) 方法(方便复制后修改)
  • 添加solon-flowGraphSpec:getNode(id) 方法
  • 添加solon-flowGraphSpec:addLoop(id) 方法替代 addLooping(后者标为弃用)
  • 添加solon-flowFlowEngine:eval(Graph, …) 系列方法
  • 优化solon-flowFlowEngine:eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 调整solon-flow移除 Activity 节点预览属性 “i m o d e " 和 " imode" 和 "imode""omode”
  • 调整solon-flowActivity 节点流出改为自由模式(可以多线流出:无条件直接流出,有条件检测后流出)
  • 调整solon-flowNode.getMeta 方法返回改为 Object 类型(并新增 getMetaAs)
  • 调整solon-flowEvaluation:runTest 改为 runCondition
  • 调整solon-flowFlowContext:incrAdd,incrGet 标为弃用(上下文数据为型只能由输入侧决定)
  • 调整solon-flowCondition 更名为 ConditionDesc
  • 调整solon-flowTask 更名为 ConditionDesc
  • 调整solon-flowGraphDecl 重命名改为 GraphSpec,NodeDecl 重命名改为 NodeSpec,LinkDecl 重命名改为 LinkSpec
  • 调整solon-flowGraphSpec.parseByText 重命名改为 fromText,parseByUri 重命名改为 fromUri
  • 调整solon-flowGraph.parseByText 重命名改为 fromText,parseByUri 重命名改为 fromUri

兼容变化对照表:

旧名称新名称说明
GraphDeclGraphSpec图定义
GraphDecl.parseByXxxGraphSpec.fromXxx图定义加载
Graph.parseByXxxGraph.fromXxx图加载
LinkDeclLinkSpec连接定义
NodeDeclNodeSpec节点定义
ConditionConditionDesc条件描述
TaskTaskDesc任务描述(避免与 workflow 的概念冲突)
FlowStatefulServiceWorkflowService工作流服务
StatefulTaskTask任务
OperationTaskAction任动工作
TaskTypeTaskState任务状态

FlowStatefulService 到 WorkflowService 的接口变化对照表:

旧名称新名称说明
postOperation(..)postTask(..)提交任务
postOperationIfWaiting(..)postTaskIfWaiting(..)提交任务
evel(..)/执行
stepForward(..)/单步前进
stepBack(..)/单步后退
/getState(..)获取状态

新特性预览:Graph 硬编码方式(及修改能力增强)

//硬编码Graphgraph=Graph.create("demo1","示例",spec->{spec.addStart("start").title("开始").linkAdd("01");spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end");spec.addEnd("end").title("结束");});//修改GraphgraphNew=Graph.copy(graph,spec->{spec.getNode("n1").linkRemove("end").linkAdd("n2");//移掉 n1 连接;改为 n2 连接spec.addActivity("n2").linkAdd("end");});

新特性预览:FlowContext:lastNodeId (计算的中断与恢复)。参考:https://solon.noear.org/article/1246

flowEngine.eval(graph,context.lastNodeId(),context);//...(从上一个节点开始执行)flowEngine.eval(graph,context.lastNodeId(),context);

新特性预览:WorkflowService(替代 FlowStatefulService)

WorkflowServiceworkflow=WorkflowService.of(engine,WorkflowDriver.builder().stateController(newActorStateController()).stateRepository(newInMemoryStateRepository()).build());//1. 取出任务Tasktask=workflow.getTask(graph,context);//2. 提交任务workflow.postTask(task.getNode(),TaskAction.FORWARD,context);

二、特色展示

1、采用 yaml 或 json 偏平式编排格式

偏平式编排,没有深度结构(所有节点平铺,使用 link 描述连接关系)。配置简洁,关系清晰

# c1.ymlid:"c1"layout:-{id:"n1",type:"start",link:"n2"}-{id:"n2",type:"activity",link:"n3"}-{id:"n3",type:"end"}

还支持简化模式(能自动推断的,都会自动处理),具体参考相关说明

# c1.ymlid:"c1"layout:-{type:"start"}-{task:""}-{type:"end"}

2、表达式与脚本自由

# c2.ymlid:"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.ymlid:"c3"layout:-{id:"n1",type:"start",link:"n2"}-{id:"n2",type:"activity",link:"n3",task:"@MetaProcessCom",meta:{cc:"demo@noear.org"}}-{id:"n3",type:"end"}

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

@Component("MetaProcessCom")publicclassMetaProcessComimplementsTaskComponent{@Overridepublicvoidrun(FlowContextcontext,Nodenode)throwsThrowable{Stringcc=node.getMeta("cc");if(Utils.isNotEmpty(cc)){//发送邮件...}}}

4、事件广播与回调支持

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

id:f4layout:-task:|//发送事件 context.eventBus().send("demo.topic", "hello"); //支持泛型(类型按需指定,不指定时为 object)-task:|//调用事件(就是要给答复) String rst = context.eventBus().<String, String>call("demo.topic.get", "hello").get(); System.out.println(rst);

5、支持驱动定制(就像 jdbc 的驱动机制)

通过驱动定制,可方便实现:

  • 工作流(workflow), 用于办公审批型(有状态、人员参与)的编排场景
  • 规则流(ruleflow)
  • 数据流(dataflow)
  • AI流(aiflow)
  • 等…
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:00:51

PyTorch与TensorFlow共存可能吗?看v2.7镜像的多框架支持

PyTorch与TensorFlow共存可能吗&#xff1f;看v2.7镜像的多框架支持 在深度学习工程师的日常工作中&#xff0c;你是否曾遇到这样的场景&#xff1a;刚跑通一个PyTorch写的模型&#xff0c;转头就要复现一篇TensorFlow实现的论文&#xff1b;团队里有人坚持用torch.nn&#xff…

作者头像 李华
网站建设 2026/4/16 10:45:32

Kong AI网关终极指南:零代码构建企业级大模型应用

Kong AI网关终极指南&#xff1a;零代码构建企业级大模型应用 【免费下载链接】kong &#x1f98d; The Cloud-Native API Gateway and AI Gateway. 项目地址: https://gitcode.com/gh_mirrors/kon/kong 还在为AI模型集成而头疼吗&#xff1f;开发团队不懂AI服务配置&am…

作者头像 李华
网站建设 2026/4/15 10:18:01

JmalCloud 私有云盘:重新定义个人数据安全与管理

JmalCloud 私有云盘&#xff1a;重新定义个人数据安全与管理 【免费下载链接】jmal-cloud-view JmalCloud 是一款私有云存储网盘项目&#xff0c;能够简单安全管理您的云端文件 项目地址: https://gitcode.com/gh_mirrors/jm/jmal-cloud-view 在数据泄露频发的今天&…

作者头像 李华
网站建设 2026/4/15 18:16:06

极速下载神器:bilix让视频下载和直播录制变得如此简单

在当今数字化时代&#xff0c;视频下载工具已成为许多用户的必备利器。无论是想要保存B站上的精彩内容&#xff0c;还是需要进行直播录制&#xff0c;bilix都能提供闪电般的下载体验。这款开源工具专为处理视频和直播流下载任务而生&#xff0c;支持从多个平台高效获取视频资源…

作者头像 李华
网站建设 2026/4/16 9:20:05

2025年必学的5大滚动动画技巧:lax.js实战完全手册

2025年必学的5大滚动动画技巧&#xff1a;lax.js实战完全手册 【免费下载链接】lax.js Simple & lightweight (<4kb gzipped) vanilla JavaScript library to create smooth & beautiful animations when you scroll. 项目地址: https://gitcode.com/gh_mirrors/l…

作者头像 李华
网站建设 2026/4/15 23:55:54

如何快速配置WeChatPlugin-MacOS:微信助手的完整使用指南

WeChatPlugin-MacOS是专为macOS平台设计的微信功能增强插件&#xff0c;通过智能应答、远程操作、消息保留等核心功能&#xff0c;显著提升微信使用体验。本指南将详细介绍如何从零开始安装配置这款实用微信助手&#xff0c;让新手用户也能轻松掌握各项实用功能。 【免费下载链…

作者头像 李华