ruoyi-flow 是一个轻量、灵活的工作流引擎, 真正的国产工作流引擎 (非BPM)。 其特点简洁轻量、独立组件、易扩展、易集成,且还拥有一个简洁美观的流程设计器。

news/2024/11/15 19:23:42/文章来源:https://www.cnblogs.com/deeround/p/18306829

ruoyi-flow

项目概述

项目介绍

ruoyi-flow 是一个轻量、灵活的工作流引擎, 真正的国产工作流引擎 (非BPM)。 其特点简洁轻量、独立组件、易扩展、易集成,且还拥有一个简洁美观的流程设计器。

项目背景

开源的流程引擎也好状态机引擎也好不可谓不多,他们的优点是功能很完备,缺点也是功能很完备,使用和扩展起来比较复杂,涉及的物理表也比较多。

就我们的项目而言(其实大部分项目都是如此)。实在不需要那么多的高级玩法:比如流程的嵌套,状态的并行、子流程等等。 功能越多也意味着复杂性会更高、性能可能会更低。

鉴于复杂性和性能的考虑,我们决定自己实现一个工作流引擎(状态机引擎),设计的目标很明确,有以下要求:

  1. 简洁的仅支持状态流转的状态机,不需要支持嵌套、并行等高级玩法。
  2. 但是也需要支持流程审批通过、不通过(驳回)、流程拿回、条件分支等中国特色流程审批。
  3. 支持对流程进行监听,从而实现业务上的扩展。

底层原理

鉴于我们的诉求是实现一个仅支持简单状态流转的状态机,该状态机的核心概念如下图所示,主要包括:

  1. State:状态
  2. Event:事件 ,状态由事件触发,引起变化
  3. Transition:流转 ,表示从一个状态到另一个状态
  4. External Transition:外部流转,两个不同状态之间的流转
  5. Internal Transition:内部流转,同一个状态之间的流转
  6. Condition:条件 ,表示是否允许触发某个事件从而达到某个状态
  7. Listener:监听 ,到达某个状态之后,触发监听实现执行业务逻辑代码

原理图:
111

功能特性

1721028402330

1721028535309

1721028558323

1721028941204

1721028952758

1721029017339

如何运行项目

1、克隆代码

git clone https://gitee.com/deeround/ruoyi-flow.git

2、浏览器直接查看./dist/index.html

如何获取源码

代码暂未开源,目前仓库已放置编译后的前端代码,可直接运行预览。

获取源码/在线演示官方唯一途径:【闲鱼】https://m.tb.cn/h.gi76dBg?tk=XprZ31X0FAl CZ0012 「我在闲鱼发布了【轻量、灵活的工作流流程引擎, 真正的国产工作流引擎】」点击链接直接打开

核心功能

工具栏

1721092694635

从左往右依次对应功能为:

  • 添加:添加新节点到画布
  • 打开:打开本地流程模板json文件
  • 下载:将当前流程保存到本地json文件
  • 查看:可查看和编辑当前流程模板的json
  • 重置:将当前流程重置为初始状态
  • 清空:清空当前画布,重新绘制流程
  • 缩小:缩小
  • 放大:放大
  • 发布:发布当前流程
  • 测试:进入流程测试界面

节点(状态)

1721093052641

节点类型

标识节点类型,如发起流程会自动找到开始节点,故开始节点只能有一个。

业务状态

绑定业务状态,节点在整个流程是唯一的,但是对应业务状态可以重复。

1721093418477

点击加号管理当前流程模板的业务状态

1721093450204

执行者

当前节点默认的执行者,在连线上面还可以单独配置连线上的执行者。

1721093470214

点击加号管理当前节点的执行者

1721093609602

拿回

配置当前节点是否允许拿回,即提交者撤回数据,状态回到来源状态。

连线(流转)

1721094685460

连线(流转)是流程从一个状态进入到另一个状态的重要配置,连线上可配置条件,执行事件,以及执行事件的执行者。

1721093797922

如上面配置,当流程处于待主管审核状态时,主管审核,流程引擎会根据条件分支(会根据请假天数)自动计算出哪一条连线能通过从而进入下一个状态。

条件分支

当多条连线配置相同的事件时,此时就需要配置连线的前置条件,这几条连线就构成的条件分支。

前置条件

1721094967730

点击加号进行前置条件管理,点击删除按钮清空当前连线的前置条件。

1721094842298

条件支持SPEL表达式、SQL语句,无论是SPEL表达式还是SQL语句都可以使用动态参数,参数值均来自流程执行的上下文,关于流程上下文可查看后面文档。

事件

1721095017977

点击加号进行执行事件管理

1721095037991

1721095059448

事件类型:

审批事件

该类事件,当执行该事件时,处理指定事件ID外还需要执行审批结果,审核结果有通过或者不通过,不指定时默认为不通过。

驳回

当事件为审批事件时,可配置驳回方式。

1721095758668

驳回方式如下:

驳回到上级节点
驳回到开始节点
驳回到重新开始节点
驳回到到指定节点
操作事件

此类事件与审批事件不同的是,不需要指定审批结果也不要配置驳回方式,如提交、修改、删除等操作。

非流程事件

此类事件在流程流转过程中未使用,类似查看按钮整个流程都可以使用,但是查看按钮并不在流程中进行流转。

样式:主要提供给前端使用。

执行者

每个连线可以单独配置执行者,如果未配置执行者则使用来源节点上的执行者。

高级功能

流程执行上下文

流程监听

流程测试

如何配置开始事件

如何配置拿回事件(样式)

低代码平台

低代码平台现已完美集成工作流引擎。

获取源码/在线演示官方唯一途径:【闲鱼】https://m.tb.cn/h.gi2HPGt?tk=Z1Ue31eIDVG CZ3458 「我在闲鱼发布了【若依低代码平台(ruoyi-vue3)在线演示】」
点击链接直接打开

1721183649931

1721183664203

1721183678969

1721183687639

1721183698282

1721183710254

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#写个简单的windows服务+部署

部署: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil.exe C:\Users\Administrator\source\repos\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 启动 停止 日志: 😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着…

laravel11:发生异常时返回json

一,未配置前laravel11直接render页面 如图:二,配置 1, bootstrap/app.php <?phpuse Illuminate\Http\Request; use Illuminate\Auth\AuthenticationException; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Foundation\Application; use I…

W外链创建小红书私信卡片教程

在当今的社交媒体时代,小红书以其独特的社区属性和用户粘性,成为了许多品牌和个人展示自己、推广产品的重要平台。而在小红书上,一张精美且富有吸引力的卡片往往能够迅速吸引用户的注意,提高点击率和转化率。本文将详细介绍如何使用W外链来创建小红书卡片,帮助你在小红书上…

kettle从入门到精通 第七十六课 ETL之kettle kettle连接hive教程

1、群里有小伙伴询问kettle连接hive的demo,今天抽点时间整理下。其实kettle连接hive和连接mysql数据库也是一样的。 1)kettle中的lib目录下放hive驱动jar,这里我使用的是kyuubi-hive-jdbc-shaded-1.9.0.jar。 2)设置hive连接参数。 3)通过表输入进行读取数据。 2、下载kyu…

火山引擎ByteHouse发布高性能全文检索引擎

作为一款定位为OLAP的分析型数据库,ByteHouse在支持结构化数据检索方面具备先天优势,而此次发布的全文检索引擎则补齐了对非结构化、半结构化等数据的快速检索能力,让用户可以构建一体化的数据管理、查询服务,降低运维成本和资源成本。更多技术交流、求职机会,欢迎关注字节…

Swift实现自定义Emoji、自定义表情、自定义键盘

实现自定义表情键盘效果如下demo 参考自PPStickerKeyboard

外卖霸王餐系统,霸王餐API接口,美团/饿了么全国200+城市

微客云免费提供外卖霸王餐系统,支持分站、运营商、商家后台、独立域名,自定义品牌,自主收款。 随着科技的快速发展,数字化和网络化已经渗透到我们生活的方方面面。在餐饮行业中,API(应用程序编程接口)接口的广泛应用不仅提升了餐厅的运营效率,也为消费者带来了更加便捷…

2024牛客暑期多校训练营1 I.Mirror Maze(题解)

2024牛客暑期多校训练营1 I.Mirror Maze(题解),大模拟题意 给一个 \(n \times m\) 的二维char数组,由4种镜子组成,\, /, -, |,镜面反射规则就是根据光线的方向和镜面的角度符合直觉的反射,然后有多组询问 \(q \leq 10^6\),每次给定起始位置和光线方向,求该光会经过多少…

基于M3u8的视频加密及播放

准备工作安装ffmpeg mac安装 brew install ffmpeg加密准备生成enc.keyopenssl rand 16 > enc.key ( 生成一个enc.key文件 )生成 ivopenssl rand -hex 16 ( 生成一段字符串,记下来)新建一个文件 enc.keyinfo 内容格式如下:Key URI # enc.key的路径,使用http形式 Pa…

zabbix6.4分离部署笔记

Zabbix 6.4 分离部署实施过程 一、环境准备 三台服务器### 操作系统:RED HAT ENTERPRISE LINUX 8.3 数据库:MYSQL8.0 ip地址以及用途:Zabbix 前端,8C 16G 16G系统盘100G:10.0.13.71 1371zabbixwebZabbix服务后端,8C 16G 100G:10.0.13.63 1363zabbixserverZabbix数据库MySql…

极大值抑制 nms 代码详解

NMS: 非极大值抑制(Non-Maximum Suppression), 功能:从大量的预测结果中筛选出得分最高的结果。 思路:NMS的主要思路是通过计算目标框之间的重叠度(即IOU,交并比)来剔除非最佳结果。NMS介绍 一张图片经过模型的前向推理之后,会输出非常多的检测结果,如下图Prediction所…

终端日志查看工具

tailspin 安装: # macOS brew install tailspin# Cargo cargo install tailspin使用: tspin <file>lnav 安装: # macOS brew install lnav# Ubuntu sudo snap install lnav使用: lnav <file>