ruoyi自定义工作流(数据库)

建表语句

-- FP火凤凰

-- 流程定义表
drop table FP_DEF_PROCE;
create table FP_DEF_PROCE
(
  pro_id VARCHAR(10) not null COMMENT '流程id',
  status VARCHAR(1) not null COMMENT '流程状态',
  pro_name VARCHAR(100) not null COMMENT '流程名称',
  pro_group VARCHAR(32) not null COMMENT '所在分组',
  action_role_id VARCHAR(600) COMMENT '操作角色',
  action_user_id VARCHAR(1000) COMMENT '操作用户',
  last_action_time VARCHAR(20) COMMENT '最后更新时间',
  pro_desc VARCHAR(200) COMMENT '流程说明',
  form_json text COMMENT '表单',
  PRIMARY KEY (pro_id)
)
  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci COMMENT='流程定义表';



-- 流程节点表
drop table FP_DEF_NODE;
create table FP_DEF_NODE
(
  node_id VARCHAR(10) not null COMMENT '节点id',
  pro_id VARCHAR(10) not null COMMENT '所属流程',
  node_sort int not null COMMENT '节点顺序',
  node_name VARCHAR(100) not null COMMENT '节点名称',
  node_type VARCHAR(1) not null COMMENT '节点类型',
  sign_code VARCHAR(10) COMMENT '会签编号',
  callback_id VARCHAR(32) COMMENT
<think>我们正在讨论的是如何在 RuoYi-Vue-Plus 项目中设计和实现工作流功能。根据引用[3],我们知道 RuoYi-Vue-Plus 集成了 RuoYi-Flowable-Plus 工作流模块。因此,我们将基于这个模块来设计工作流工作流设计通常包括以下几个关键部分: 1. 流程定义(流程模型设计) 2. 表单设计 3. 流程部署 4. 流程实例管理(启动、执行、任务处理等) 5. 历史记录和监控 在 RuoYi-Vue-Plus 中,工作流模块主要分为两部分:流程管理和办公管理。 一、流程管理 1. 流程分类:对流程进行分类管理。 2. 表单配置:设计流程中使用的表单,支持动态表单和关联业务表单。 3. 流程模型:使用Flowable的在线流程设计器(BPMN)设计流程模型。 4. 部署管理:将设计好的流程模型部署到流程引擎中。 二、办公管理 1. 新建流程:用户可以选择已部署的流程来启动一个新的流程实例。 2. 我的流程:用户查看自己启动的流程实例。 3. 待办任务:用户需要处理的任务列表。 4. 已办任务:用户已经处理过的任务列表。 5. 任务抄送:将任务抄送给其他用户查看。 6. 代签任务:委托他人处理自己的任务。 下面,我们将详细介绍如何实现这些功能。 步骤1:流程模型设计 在流程管理->流程模型中,我们可以使用集成的Flowable Modeler设计流程。设计流程包括: - 绘制BPMN流程图 - 设置每个节点的属性,如处理人、表单等 步骤2:表单设计 在流程管理->表单配置中,可以设计两种表单: - 动态表单:通过拖拽组件生成表单,适用于简单流程。 - 关联业务表单:关联到系统中的具体业务表单(如请假单),在流程中展示和填写业务数据。 步骤3:流程部署 设计好流程模型后,将其部署到流程引擎中。部署后,流程就可以被使用了。 步骤4:启动流程实例 在办公管理->新建流程中,选择部署的流程,填写必要的表单数据,启动流程实例。 步骤5:任务处理 当流程流转到某个用户任务时,该用户可以在待办任务列表中看到任务,并执行处理(如审批)。 步骤6:流程监控 管理员可以在流程管理中查看流程实例的状态,也可以进行干预(如挂起、激活、删除等)。 技术实现细节: 后端:使用Flowable流程引擎,集成到Spring Boot中。通过Flowable提供的API进行流程部署、启动、任务处理等操作。 前端:使用Vue3和Element Plus,调用后端的Flowable REST API(或自定义的API)来实现前端操作。 例如,启动流程实例的代码可能类似于: ```java // 在服务层中 public void startProcessInstance(String processDefinitionKey, Map<String, Object> variables) { runtimeService.startProcessInstanceByKey(processDefinitionKey, variables); } ``` 任务处理代码: ```java public void completeTask(String taskId, Map<String, Object> variables) { taskService.complete(taskId, variables); } ``` 另外,RuoYi-Vue-Plus 还集成了任务监听器、表达式等Flowable特性,可以灵活地分配任务和处理业务逻辑。 总结:在RuoYi-Vue-Plus中实现工作流,主要依靠集成的Flowable流程引擎,通过设计流程模型、配置表单、部署流程,然后在办公管理中启动和处理流程实例。同时,系统提供了丰富的API供开发者扩展。 §§相关问题§§ 1. RuoYi-Vue-Plus 中工作流模块如何与业务模块集成? 2. 如何自定义流程节点的处理人? 3. 在 RuoYi-Vue-Plus 中如何实现流程的会签功能? 4. 如何监控和管理运行中的流程实例? 5. 如何实现流程的版本控制?</think>### RuoYi-Vue-Plus 工作流功能设计与实现 RuoYi-Vue-Plus 通过集成 **Flowable** 工作流引擎实现业务流程管理,主要包含流程设计、表单配置、任务处理等核心功能。以下是具体实现方案: --- #### 一、工作流架构设计 1. **技术栈** - 后端:`Flowable 6.7.2` + `Spring Boot` - 前端:`Vue 3` + `BPMN.js`(流程设计器) - 数据库流程数据独立存储于`ACT_*`前缀表中[^3] 2. **模块划分** ```mermaid graph LR A[工作流模块] --> B[流程设计] A --> C[表单配置] A --> D[任务处理] A --> E[监控统计] ``` --- #### 二、核心功能实现 1. **流程建模** - 使用 **BPMN 2.0** 标准设计流程 - 前端集成 `bpmn-js` 设计器: ```vue <!-- 流程设计器组件 --> <template> <div ref="bpmnContainer"></div> </template> <script> import BpmnModeler from 'bpmn-js/lib/Modeler'; export default { mounted() { this.modeler = new BpmnModeler({ container: this.$refs.bpmnContainer }); this.loadDiagram('默认流程.bpmn'); } } </script> ``` 2. **动态表单配置** - 支持 **关联业务表** 和 **自定义表单** 两种模式 - 数据库表结构: ```sql CREATE TABLE ruoyi_form ( form_id BIGINT PRIMARY KEY, form_name VARCHAR(50), fields JSON -- 存储表单字段配置 ); ``` 3. **任务处理逻辑** ```java // 任务处理服务 @Service public class FlowTaskService { @Autowired private TaskService taskService; public void completeTask(String taskId, Map<String, Object> variables) { // 添加审批意见 taskService.addComment(taskId, null, "审批通过"); // 提交任务 taskService.complete(taskId, variables); } } ``` --- #### 三、关键实现机制 1. **流程-业务绑定** - 通过 `BUSINESS_KEY_` 字段关联业务数据 - 启动流程实例时绑定: ```java runtimeService.startProcessInstanceByKey( "leave_process", businessKey, // 例如:leave_application_123 variables ); ``` 2. **审批人动态分配** - 使用 **Flowable 表达式** 实现: ```xml <bpmn:userTask id="leader_approve" name="部门审批"> <bpmn:extensionElements> <flowable:assignee>${taskAssignmentService.getDeptLeader(applicantId)}</flowable:assignee> </bpmn:extensionElements> </bpmn:userTask> ``` 3. **会签实现** ```xml <bpmn:userTask id="multi_approve" name="会签任务"> <bpmn:multiInstanceLoopCharacteristics isSequential="false" flowable:collection="${approverList}" flowable:elementVariable="approver"> <bpmn:completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.6}</bpmn:completionCondition> </bpmn:multiInstanceLoopCharacteristics> </bpmn:userTask> ``` --- #### 四、功能界面展示 1. **流程管理** - 流程分类管理 - 表单设计器 - 模型部署 2. **办公管理** - 待办任务列表 - 流程跟踪视图 ```mermaid graph TB A[新建流程] --> B[填写表单] B --> C{自动分配} C -->|通过| D[部门审批] C -->|拒绝| E[重新提交] D --> F[归档] ``` --- #### 五、部署与扩展 1. **部署流程** ```bash # 将BPMN文件放入 resources/processes /src/main/resources/processes/leave_process.bpmn20.xml ``` 2. **自定义扩展** - 实现 `TaskAssignmentListener` 接口处理动态分配逻辑 - 重写 `HistoryEventHandler` 实现审批记录定制 > 源码参考: > [RuoYi-Flowable-Plus 模块](https://gitee.com/dromara/RuoYi-Vue-Plus/tree/master/ruoyi-flowable-plus)[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值