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

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

时间:2024-07-17 10:51:45浏览次数:12  
标签:状态 简洁 流程 流转 引擎 事件 轻量 节点

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

标签:状态,简洁,流程,流转,引擎,事件,轻量,节点
From: https://www.cnblogs.com/deeround/p/18306829

相关文章

  • 火山引擎ByteHouse发布高性能全文检索引擎
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群。 随着数字时代的发展,数据的来源和生成方式越来越广泛,数据形态也愈加丰富。 以某电商平台的数据情况举例。该电商平台每日产生大量数据,有些为电商平台的订单数据,包括订单号、商品数量、......
  • 视创云展数字人驱动引擎,“解锁”你在虚拟世界的“数字化身”!
    数字人驱动引擎作为视创云展的核心功能之一,提供了强大的数字人创作与交互能力,以其DIY自由创作、多模态驱动、支持写实/卡通形象以及打造元宇宙身份代理等核心优势,为用户在元宇宙中创造个性化、智能化的数字人体验提供了强有力的支持。一、DIY自由创作视创云展的数字人驱动引......
  • 别小瞧它,提高效率可了解可拖拽的工作流引擎
    当前,社会发展程度越来越高,很多企业都希望寻求更优的平台产品实现提质增效的目的。低代码技术平台、可拖拽的工作流引擎具有可视化操作界面、更灵活、好操作等多个优势特点,在提升办公效率方面具有事半功倍的效果。提升效率,可以随时来了解低代码技术平台、可拖拽的工作流引擎更多特......
  • Intel Management Engine WMI Provider 2408.5.4.0 20240221 驱动程序 Intel管理引擎
    驱动程序"IntelManagementEngineWMIProvider2408.5.4.0"是指Intel管理引擎的一部分,它通过Windows管理仪表(WMI)提供对管理引擎功能的访问和管理。这些驱动程序通常用于管理和配置Intel管理引擎的功能,包括安全功能、远程访问以及系统监控等。如果您需要安装或更新这个驱......
  • sqldumper.exe 是 SQL Server 的一个重要组件,专门用于捕获和处理关键错误,帮助管理员和
     sqldumper.exe的起源可以追溯到MicrosoftSQLServer的开发和运行时管理中。它作为SQLServer的一部分,主要用于处理数据库引擎遇到的关键错误和异常情况。具体来说,sqldumper.exe主要功能包括:异常处理和故障捕获:当SQLServer数据库引擎遇到严重错误时,如内存访问错误......
  • vue2 简洁的行政区划选择组件封装
     vue2简洁的行政区划选择组件封装//判断变量是否为null或undefinedexportfunctionisNullOrEmpty(value){ returnvalue===null||value===undefined||value===''}//判断变量是否为null或undefinedexportfunctionisNullOrUndefined(value){ ret......
  • 入门级搜索引擎实现
    实验原理:该搜索引擎的实现主要分为四个部分。第一部分:从能源学院主页https://nyxy.cumtb.edu.cn/开始爬取,使用BeautifulSoup库来解析HTML,使用双端队列存储未访问的链接,并使用集合存储已访问的链接,以避免重复访问同一链接,同时过滤掉一些不感兴趣的链接。第二部分:将网页编......
  • 邮件发送与使用thymeleaf引擎重置密码邮件
    邮件发送原生java-mail进行邮件发送;前提:先登录邮箱,开启POP3/SMTP服务,使第三方可以使用授权码登录邮箱。@TestpublicvoidsendEmail(){Stringaccount="[email protected]";Stringpwd="KXNZHOZDMLTVWHOZ";//设置SMTP请求头Pr......
  • 开源工作流引擎该如何扩展?扩展哪些功能?
    目前主流的开源流程引擎有activiti、flowable、camunda等,这几个开源流程引擎的版本很多,哪个开源流程引擎哪个版本的功能更多、性能更好,该如何选择请参考:https://lowcode.blog.csdn.net/article/details/116405594无论您选择哪一个开源流程引擎,都不可能直接拿来即用,均需要做一定的......
  • Linux系统搭建轻量级个人博客VanBlog并一键发布公网远程访问
    文章目录前言1.Linux本地部署2.VanBlog简单使用3.安装内网穿透4.创建公网地址5.创建固定公网地址前言今天和大家分享如何在LinuxUbuntu系统搭建一款轻量级个人博客VanBlog,并结合cpolar内网穿透软件生成公网地址,轻松实现随时随地远程访问本地部署的站点。无需......