芋道工作流系统
创建于 2025 年 12 月 1 日
项目介绍
芋道工作流系统是一套以计量器具(电表等仪器仪表)管理为核心的审批流应用,基于芋道开源快速开发平台(ruoyi-vue-pro)二次开发。项目以 Flowable 6.8 工作流引擎为底座,把”业务单据”与”流程审批”彻底打通:业务人员在前端填写入库申请、领用申请、调拨单、报废单等单据后,系统自动发起对应的 BPM 流程;审批在待办中心完成,流程结束后的结果再回写业务单据与库存状态,形成完整闭环。
仓库包含 Spring Boot 2.7 多模块后端(ptchv_backed-main,模块有 yudao-module-meter 计量业务、yudao-module-bpm 工作流、yudao-module-hrmresource 人力、yudao-module-system / yudao-module-infra 系统与基础设施)、Vue 3 + Element Plus + TypeScript 管理后台前端(ptchv_front-master)以及一份约 15MB 的全量 SQL 脚本(20251201-ptchv.sql)。SQL 脚本预置了 21 个系统用户、完整的菜单权限与字典、多租户数据,以及 160 条历史流程实例、99 条运行中任务和八类流程定义的多个版本(act_re_procdef 中可见”入库申请单 RK-Archive""调拨申请单 DB-Archive""报废申请单 BF-Archive”等),导入数据库即可直接跑通全流程。
项目架构
项目为 Spring Boot 多模块单体架构(JDK 8,版本 2025.09-jdk8-SNAPSHOT),前端为 Vue 3 管理后台,主要组成如下:
| 模块 | 技术栈 | 说明 |
|---|---|---|
| yudao-module-bpm | Flowable 6.8.0 | 工作流核心:流程定义/模型/表单/分类/用户组/表达式/监听器管理,任务与流程实例服务,OA 请假演示流程 |
| yudao-module-meter | Spring Boot、MyBatis-Plus | 计量器具业务:入库、领用、调拨、送检、报废、封存停用、确认报告、不合格联系等单据与流程集成 |
| yudao-module-system / infra | Spring Boot | 系统管理(用户、角色、部门、菜单、租户)与基础设施(文件、定时任务、代码生成、日志) |
| yudao-server | Spring Boot | 启动模块,集成 Flowable 配置(database-schema-update: true、history-level: audit) |
| ptchv_front-master | Vue 3、Vite 4、Element Plus 2.11、TypeScript、bpmn-js、form-create | 管理后台前端,src/views/bpm 为工作流页面,src/views/meter 为业务页面 |
| 20251201-ptchv.sql | MySQL | 全量建表与示例数据:bpm_* 业务配置表、act_* / flw_* Flowable 引擎表、meter_* 计量业务表 |
后端按 controller → service → mapper → dataobject 分层。工作流模块的 service 层分为 definition(流程模型、表单、分类、表达式、监听器、用户组)、task(流程实例、审批任务、抄送)、oa(请假演示)与 message(消息通知);framework/flowable 下封装了 Flowable 的候选人策略、事件监听器、行为扩展与表达式支持。业务模块通过 BpmProcessInstanceApi 跨模块调用工作流能力,BpmProcessInstanceStatusEventListener 作为事件基类由各业务监听器继承实现,实现流程与业务的状态解耦。
核心功能
单据与流程的深度集成。 每类业务单据都对应一条 Flowable 流程:入库 RK-Archive、领用 JY-Borrow、调拨 DB-Archive、送检 SJ-Archive、报废 BF-Archive、封存停用 RF-Archive、确认报告 QR-Archive、不合格联系 UQC-Archive。以入库为例,StorageServiceImpl.createStorage() 在保存单据主表与明细表(含按当天日期统计生成的流水号)后,调用 processInstanceApi.createProcessInstance() 发起流程,businessKey 设置为业务单 ID,并把流程实例 ID 回写 meter_storage.process_instance_id;流程流转期间通过 MeterRKArchiveStatusListener 监听流程状态事件,审批通过(status=2)时自动将明细中的计量器具存储状态更新为已入库,实现”单据状态 = 流程结果”的自动同步。
流程模型与表单的可视化管理。 前端 src/views/bpm/model 提供流程模型列表与在线设计:基于 bpmn-js 的 BPMN 设计器支持节点拖拽编排(依赖 bpmn-js-token-simulation 令牌模拟、camunda-bpmn-moddle 模型扩展),并提供 SimpleModelDesign.vue 简单流程设计器;流程表单基于 form-create 动态表单(src/views/bpm/form/editor),支持表单 JSON 配置。流程定义侧还内置了流程分类、用户组、自定义流程表达式(processExpression)与流程监听器(processListener)的管理界面,后端 controller/admin/definition 下对应完整的增删改查接口。
任务中心与完整审批操作。 前端 src/views/bpm/task 分为待办(todo)、已办(done)、抄送(copy)、流程管理(manager)四类视图,processInstance 目录提供我的流程发起(create)、流程详情(detail,含 ProcessInstanceTimeline.vue 审批时间线)、流程管理(manager)与流程报表(report)。后端 BpmTaskService 提供了完善的审批操作集合:approveTask 审批通过、rejectTask 驳回、transferTask 转办、delegateTask 委派、createSignTask / deleteSignTask 加签减签、returnTask 退回上一步、withdrawTask 发起人撤回、copyTask 抄送,以及 processTaskTimeout 任务超时处理与 triggerTask 触发任务,覆盖企业审批流的常见场景。
发起人指定审批人。 计量业务的发起页面(如 src/views/meter/storage/create.vue)在表单下方嵌入审批流程区域:根据流程定义 Key 拉取审批节点信息(ApprovalNodeInfo),由发起人按节点指定具体审批人,提交时通过 startUserSelectAssignees 传给后端完成”发起时指定审批人”的能力;后端同时预留候选人策略扩展点,MeterTaskCandidateStartUserDeptLeaderStrategy 演示了自定义”发起人的部门负责人”候选人策略(通过 processInstanceService.getProcessInstance() 获取发起人后计算审批人集合),可注册为新的 BpmTaskCandidateStrategy 实现。
OA 请假演示流程。 yudao-module-bpm 内置 OA 请假模块(bpm_oa_leave 表 + BpmOALeaveController),官方注释定位为”用于演示自己存储数据、接入工作流的例子”:请假单保存后发起 leave 流程,BpmOALeaveStatusListener 监听流程结果回写请假单状态,前端 src/views/bpm/oa/leave 提供发起与列表页面。它是一份最小完整的”业务表 + 流程实例 + 状态监听”集成范式,也是学习把自有业务接入工作流的最佳起点。SQL 中还可见测试分类、F1 动态表单与 A1 等实验性流程定义,记录了这个项目从搭建到上线的演进痕迹。
功能截图
暂无运行截图。
快速上手
- 创建数据库并导入全量脚本(约 15MB,含 Flowable 引擎表、系统表与示例业务数据):
mysql -u root -p -e "CREATE DATABASE ptchv DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p ptchv < 20251201-ptchv.sql
- 修改后端
ptchv_backed-main/yudao-server/src/main/resources/application-local.yaml中的 MySQL 与 Redis 连接,然后启动:
cd ptchv_backed-main && mvn install -DskipTests
cd yudao-server && mvn spring-boot:run # http://localhost:48080
- 启动管理后台前端:
cd ptchv_front-master && pnpm install && pnpm dev
- 使用预置账号登录系统:进入”工作流程”菜单体验流程模型设计、动态表单与任务中心;进入”计量管理”菜单发起入库申请(RK-Archive),按节点指定审批人提交后,在另一账号的待办中心完成审批,即可看到单据状态与计量器具存储状态被自动回写。
总结
芋道工作流系统是一套”框架级工作流 + 行业业务”结合的典型工程:它没有停留在 Flowable 的裸用法上,而是把流程模型设计、动态表单、候选人策略、任务操作、超时处理、事件监听等能力完整封装进 yudao-module-bpm,再由 yudao-module-meter 以业务单据的视角消费这些能力——每条流程通过 businessKey 与业务表关联,通过状态事件监听回写单据与库存,前端发起页按流程节点让用户指定审批人。对于想在自己的业务系统里接入工作流、或者学习 Flowable 与 Spring Boot 工程化实践的开发者而言,从 OA 请假这一最小示例入手,再对照入库流程的”保存单据 → 发起流程 → 监听回写”链路,是一条清晰且可复制的路径。