🔥 Solon Flow v3.4.0 轻量级流程编排框架
Solon Flow 是一个轻量级流程编排框架(采用 yaml 或 json 偏平式编排格式)
- 支持无状态流程
- 可用于计算(或任务)的编排场景
- 可用于业务规则和决策处理型的编排场景
- 支持有状态流程
- 可用于办公审批型(有状态、可中断,人员参与)的编排场景
- 可用于长时间流程(结合自动前进,等待介入)的编排场景
有可视化的设计器:
嵌入第三方框架的示例:
- 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()
方法
方法名称调整:
旧方法 | 新方法 | |
---|---|---|
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"}
对于驱动器的定制,我们还可以:定制(或选择)不同的脚本执行器、组件容器实现等。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
go-carbon v2.6.11 正式版发布,轻量级、语义化的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的golang时间处理库,不依赖于任何第三方库,100%单元测试覆盖率,已被awesome-go收录,并获得gitee2024 年最有价值项目(GVP)和gitcode2024 年度开源摘星计划 (G-Star) 项目 document:carbon.go-pkg.com github:github.com/dromara/carbon gitee:gitee.com/dromara/carbon gitcode:gitcode.com/dromara/carbon 更新日志 将Sleep由结构体方法更改成全局方法 重构波斯历并添加基准测试 新增希伯来历支持 新增性能测试报告文件
- 下一篇
paozhu 1.9.4 发布 C++ Web 开发框架
Paozhu(炮竹🧨)是一个全面、快速的C++ web framework 开发框架,集成C++ ORM,开发速度跟脚本语言一样,日写1000行业务代码没有压力,框架集成了WebServer,自己原生解析HTTP/1、HTTP/2、JSON协议,GET、POST全部解析出来,POST几种方式都做了区分,框架自带一个OBJ微型对象,可以存放char int string float等,框架自动解析URL、POST参数到微型对象里面,使用urlpath映射到函数挂载点,使用协程、线程池、数据库链接池。 paozhu 最近两个小版本加入了主题切换功能,适合SAAS开发,目前已经在产品环境使用。 先配置 conf/server.conf 假设 cn.aaa.com 域名 配置SAAS模式 [cn.aaa.com] wwwpath=/www/user/www/aaa http2_enable=1 upload_max_size=16777216 siteid=9 groupid=0 alias_domain=aaa.com themes=cn 1 themes就是主题皮...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主