ruoyi-flow
项目概述
项目介绍
ruoyi-flow 是一个轻量、灵活的工作流引擎, 真正的国产工作流引擎 (非BPM)。 其特点简洁轻量、独立组件、易扩展、易集成,且还拥有一个简洁美观的流程设计器。
项目背景
开源的流程引擎也好状态机引擎也好不可谓不多,他们的优点是功能很完备,缺点也是功能很完备,使用和扩展起来比较复杂,涉及的物理表也比较多。
就我们的项目而言(其实大部分项目都是如此)。实在不需要那么多的高级玩法:比如流程的嵌套,状态的并行、子流程等等。 功能越多也意味着复杂性会更高、性能可能会更低。
鉴于复杂性和性能的考虑,我们决定自己实现一个工作流引擎(状态机引擎),设计的目标很明确,有以下要求:
- 简洁的仅支持状态流转的状态机,不需要支持嵌套、并行等高级玩法。
- 但是也需要支持流程审批通过、不通过(驳回)、流程拿回、条件分支等中国特色流程审批。
- 支持对流程进行监听,从而实现业务上的扩展。
底层原理
鉴于我们的诉求是实现一个仅支持简单状态流转的状态机,该状态机的核心概念如下图所示,主要包括:
- State:状态
- Event:事件 ,状态由事件触发,引起变化
- Transition:流转 ,表示从一个状态到另一个状态
- External Transition:外部流转,两个不同状态之间的流转
- Internal Transition:内部流转,同一个状态之间的流转
- Condition:条件 ,表示是否允许触发某个事件从而达到某个状态
- Listener:监听 ,到达某个状态之后,触发监听实现执行业务逻辑代码
原理图:
功能特性
如何运行项目
1、克隆代码
git clone https://gitee.com/deeround/ruoyi-flow.git
2、浏览器直接查看./dist/index.html
如何获取源码
代码暂未开源,目前仓库已放置编译后的前端代码,可直接运行预览。
获取源码/在线演示官方唯一途径:【闲鱼】https://m.tb.cn/h.gi76dBg?tk=XprZ31X0FAl CZ0012 「我在闲鱼发布了【轻量、灵活的工作流流程引擎, 真正的国产工作流引擎】」点击链接直接打开
核心功能
工具栏
从左往右依次对应功能为:
- 添加:添加新节点到画布
- 打开:打开本地流程模板json文件
- 下载:将当前流程保存到本地json文件
- 查看:可查看和编辑当前流程模板的json
- 重置:将当前流程重置为初始状态
- 清空:清空当前画布,重新绘制流程
- 缩小:缩小
- 放大:放大
- 发布:发布当前流程
- 测试:进入流程测试界面
节点(状态)
节点类型
标识节点类型,如发起流程会自动找到开始节点,故开始节点只能有一个。
业务状态
绑定业务状态,节点在整个流程是唯一的,但是对应业务状态可以重复。
点击加号管理当前流程模板的业务状态
执行者
当前节点默认的执行者,在连线上面还可以单独配置连线上的执行者。
点击加号管理当前节点的执行者
拿回
配置当前节点是否允许拿回,即提交者撤回数据,状态回到来源状态。
连线(流转)
连线(流转)是流程从一个状态进入到另一个状态的重要配置,连线上可配置条件,执行事件,以及执行事件的执行者。
如上面配置,当流程处于待主管审核状态时,主管审核,流程引擎会根据条件分支(会根据请假天数)自动计算出哪一条连线能通过从而进入下一个状态。
条件分支
当多条连线配置相同的事件时,此时就需要配置连线的前置条件,这几条连线就构成的条件分支。
前置条件
点击加号进行前置条件管理,点击删除按钮清空当前连线的前置条件。
条件支持SPEL表达式、SQL语句,无论是SPEL表达式还是SQL语句都可以使用动态参数,参数值均来自流程执行的上下文,关于流程上下文可查看后面文档。
事件
点击加号进行执行事件管理
事件类型:
审批事件
该类事件,当执行该事件时,处理指定事件ID外还需要执行审批结果,审核结果有通过或者不通过,不指定时默认为不通过。
驳回
当事件为审批事件时,可配置驳回方式。
驳回方式如下:
驳回到上级节点
驳回到开始节点
驳回到重新开始节点
驳回到到指定节点
操作事件
此类事件与审批事件不同的是,不需要指定审批结果也不要配置驳回方式,如提交、修改、删除等操作。
非流程事件
此类事件在流程流转过程中未使用,类似查看按钮整个流程都可以使用,但是查看按钮并不在流程中进行流转。
样式:主要提供给前端使用。
执行者
每个连线可以单独配置执行者,如果未配置执行者则使用来源节点上的执行者。
高级功能
流程执行上下文
流程监听
流程测试
如何配置开始事件
如何配置拿回事件(样式)
低代码平台
低代码平台现已完美集成工作流引擎。
获取源码/在线演示官方唯一途径:【闲鱼】https://m.tb.cn/h.gi2HPGt?tk=Z1Ue31eIDVG CZ3458 「我在闲鱼发布了【若依低代码平台(ruoyi-vue3)在线演示】」
点击链接直接打开