RuoYi-flowable工作流管理

本文介绍了基于RuoYi-flowable和Flowable的工作流管理系统,提供了一键安装和运行的方法。前端采用Vue、Element UI,后端使用Spring Boot、MyBatis Plus。文章详细阐述了构建镜像时的注意事项,包括解决前端编译问题和后端依赖问题。此外,还提供了安装运行的步骤,包括在群晖DSM上解压文件和启动服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上周有网友留言需要工作流相关的系统,今天介绍的这个就支持自定义的表单,可能未必是他想要的,但也许有其他人需要呢?反正都已经折腾完了??

老苏已经尽量简化了安装,你只要下载一个 zip 文件,上传到群晖并解压,再执行一条命令就可以完成全部的安装,中途不需要修改任何东西,应该够简单了吧??

什么是 RuoYi-flowable ?

RuoYi-flowable 是基 RuoYi-vue 4.x + flowable 6.5 开发的工作流管理软件。

  • 前端采用 VueElement UI
  • 后端采用 Spring BootSpring SecurityRedis & Jwt
  • 权限认证使用 Jwt,支持多终端认证系统。
  • 支持加载动态权限菜单,多方式轻松权限控制。
  • 高效率开发,使用代码生成器可以一键生成前后端代码。

官方提供了演示地址:http://139.155.16.243/

什么是 RuoYi-Vue ?

RuoYi-Vue 是基于 SpringBootSpring SecurityJwtVue 的前后端分离的后台管理系统。

感觉国内有不少系统是基于这套框架二次开发的

什么是 Flowable

Flowable 是面向开发人员、系统管理员和业务用户的紧凑高效的工作流和业务流程管理 ( BPM ) 平台。是用 Java 编写的闪电般快速、久经考验的 BPMN 2 流程引擎。

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

这个镜像在构建时遇到几个坑,简单做个记录:

  • 前端用到了 node-sassnode-gyp 之类的,node 版本高于 12 会编不过

  • 后端用到了已经删除的 com.sun.prism.paint,会导致 ruoyi-flowable 编译失败,需修改 /root/RuoYi-flowable/ruoyi-flowable/src/main/java/com/ruoyi/flowable/config/MyDefaultProcessDiagramCanvas.java ,将 import com.sun.prism.paint.Color; 注释掉

不然编译的时候 ruoyi-flowable 模块会 build 失败

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ruoyi-flowable ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 38 source files to /ruoyi-flowable/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /ruoyi-flowable/src/main/java/com/ruoyi/flowable/config/MyDefaultProcessDiagramCanvas.java:[3,27] package com.sun.prism.paint does not exist
[INFO] 1 erro
### 关于 RuoYi-Flowable-Plus 工作流监听器的实现与配置 #### 1. **RuoYi-Flowable-Plus 的背景** RuoYi-Flowable-Plus 是基于 RuoYi-Vue 和 Flowable 引擎构建的一个增强版工作流管理系统[^3]。相比原生版本,它增加了许多实用的功能模块,例如在线表单设计器、更强大的流程建模工具以及针对企业级应用优化的工作流处理逻辑。 --- #### 2. **监听器的概念及其分类** 在 Flowable 中,监听器分为两种主要类型: - **执行监听器 (Execution Listener)**:用于监控流程实例生命周期中的事件,比如 `start` 或 `end`。 - **任务监听器 (Task Listener)**:专注于用户任务级别的事件捕获,如任务创建 (`create`)、分配 (`assignment`) 或完成 (`complete`)。 这些监听器可以通过 XML 配置或者 Java 类的方式进行定义和绑定[^1]。 --- #### 3. **监听器的具体实现方式** ##### (1)XML 方式配置监听器 可以在 BPMN 文件中直接声明监听器的行为: ```xml <process id="exampleProcess"> <!-- 定义启动事件 --> <startEvent id="startEvent" name="Start"></startEvent> <!-- 用户任务节点 --> <userTask id="task1" name="审批任务"> <extensionElements> <activiti:taskListener event="create" class="com.example.listener.TaskCreateListener"/> <activiti:taskListener event="complete" delegateExpression="${myCustomDelegate}"/> </extensionElements> </userTask> <!-- 结束事件 --> <endEvent id="endEvent" name="End"></endEvent> </process> ``` 上述代码片段展示了如何为用户任务添加两个不同的监听器——分别响应任务创建(`create`)和任务完成(`complete`)事件。 --- ##### (2)Java 类方式实现监听器 通过编写自定义类来实现具体的业务逻辑。以下是示例代码: ```java import org.flowable.engine.delegate.DelegateTask; import org.flowable.engine.delegate.TaskListener; public class TaskCreateListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { String assignee = delegateTask.getAssignee(); System.out.println("任务已分配给:" + assignee); // 可在此处加入额外的操作逻辑 } } ``` 此段代码展示了一个简单的任务监听器,在任务被创建时打印当前指派人的信息。 --- ##### (3)动态注册监听器 如果希望在运行时动态地向某个任务或流程附加监听器,则可通过 API 来实现: ```java import org.flowable.task.api.Task; import org.flowable.task.service.impl.persistence.entity.TaskEntity; // 获取目标任务对象 Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task instanceof TaskEntity) { ((TaskEntity) task).addTaskListener(TaskListener.EVENTNAME_CREATE, new MyDynamicTaskListener()); } flowableEngine.getRuntimeService().setVariable(processInstanceId, "dynamicVar", true); ``` 这种方式适用于需要灵活调整行为的应用场景[^2]。 --- #### 4. **注意事项** - 在实际开发过程中,应确保监听器的性能开销尽可能低,以免影响整个系统的吞吐量。 - 如果涉及复杂的业务规则判断,推荐将核心逻辑抽取到独立的服务层调用,而不是直接写入监听器内部。 - 对于大型项目而言,维护一份清晰的设计文档有助于团队成员理解和协作。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值