流程功能设计
这篇解决什么
流程中心怎么分层:Flowable 是引擎,yudao-module-bpm 管模型 / 表单 / 待办 / 实例,OA / HRM / 合同等单据只实现 FlowBillService 回写。读完先对模块边界和表,再进接入、设计器、办理等功能篇。
引擎用 Flowable,BOM 里 flowable.version 为 8.0.0。默认端口 48080,管理端前缀 /admin-api。工程启动见 快速开始。
业务流程及架构
流程中心自己就是引擎,不是业务台账。模型发布后生成 ACT_RE_PROCDEF;发起和待办走 BpmProcessInstanceController / BpmTaskController;单据状态由各模块监听回写。
示意图:左客户端。中间 BPM 调 Flowable,业务单据只提交 key 并接收状态事件。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 流程配置 | 四步向导、两种表单类型 | 流程配置 |
| 业务表单 | 自己建表、写 list / info,formType = 20 | 业务表单开发 |
| 流程表单 | 设计器拖控件,formType = 10 | 流程表单设计 |
| BPMN | 复杂图画布,类型 10 | 流程设计器(BPMN) |
| SIMPLE | 默认竖排设计器,类型 20,发布时转 BPMN | 流程设计器(钉钉、飞书) |
| 办理 | 通过 / 不通过 / 退回 | 审批通过、不通过、驳回 |
| 选人 | 节点 candidateStrategy | 选择审批人 |
| 多人 | 会签 / 或签 / 依次 | 会签、或签、依次审批 |
| 发起 | 大厅、我的流程、取消、重提 | 流程发起、取消、重新发起 |
| 转办抄送 | 转办 / 委派 / 抄送我的 | 转办、委派、抄送 |
| 加签 | before / after | 审批加签、减签 |
| 表达式 | 菜单模板 + 节点 ${} | 流程表达式 |
| 监听器 | 执行 / 任务监听模板 | 执行监听器、任务监听器 |
| 通知 | 短信 bpm_* + 业务回写事件 | 流程审批通知 |
| 移动 | 同一套 /admin-api/bpm/** | 移动端审批 |
| 达梦 | JDBC 产品名映射 Oracle 方言 | 工作流达梦适配 |
不要用目录名当流程 key
BPM 模块 Java 里硬编码的演示 key 只有 oa_leave。用车是 oa_car_apply_bill,入职是 hr_employee_entry_bill。全部业务 key 以各模块单据枚举和已发布模型的 KEY_ 为准。
数据表 ER
主干表按本仓库 DO 画出。引擎运行表还有 ACT_RU_TASK、ACT_HI_PROCINST 等,图上只留业务扩展。
示意图:按本仓库生成的 ER。bpm_form 只服务流程表单;业务表单路径记在定义扩展上。
前后端代码
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | api 枚举 + server 实现 | ruoyi-office/yudao-module-bpm/ |
| 单体引入 | yudao-module-bpm-server | ruoyi-office/yudao-server/pom.xml |
| 引擎装配 | 达梦 / openGauss、作业线程池 | .../framework/flowable/config/BpmFlowableConfiguration.java |
| 模型接口 | GET /bpm/model/list,发布、导入 | .../controller/admin/definition/BpmModelController.java |
| 实例 / 任务 | 发起、待办、通过、加签 | BpmProcessInstanceController、BpmTaskController |
| 单据回写 | updateProcessStatus / onProcessApproved | yudao-framework/yudao-common/.../FlowBillService.java |
| 管理端 | 模型、表单、待办、发起 | ruoyi-office-vben/apps/web-antd/src/views/bpm/ |
| 移动端 | 引擎页在 pages-bpm | ruoyi-office-uniapp/src/pages-bpm/ |
官方菜单:1185 流程中心(/bpm)。发起 2720(/bpm/start-process),流程设置 1186,模型 1193(/bpm/manager/model),表单 1187,待办 1207,已办 1208,我的流程 1201,抄送 2713。看不到菜单先查角色。不要引用已删的 5099。

本系统截图:流程中心 → 流程设置 → 流程模型。分类下能看到已发布的用车、用印等模型。

本系统截图:流程中心 → 发起流程。业务表单和流程表单都从这里进,自定义路径必须对上。
新建模型默认 BpmModelTypeEnum.SIMPLE = 20。复杂图再改 BPMN。PC 单据页约定 list / info;模型 formCustomViewPath 必须对这两处。
功能开启
单体 -P boot 时已经依赖 BPM 实现,没有单独的「流程开关」页。启动 YudaoServerApplication 即可。微服务 -P cloud 再单独跑 BpmServerApplication。
客户默认包 ruoyi-office-db/dump/latest/:先 schema_*.sql 再 static_data_*.sql,带 bpm_* 表、ACT_* / FLW_* 引擎表、菜单、分类和已发布模型。以后改表走 ruoyi-office-db/update/。
xxl_job_*.sql、nacos_schema.sql 不要导进业务库。Linux 上引擎表名必须按大写导出,ACT_GE_PROPERTY 和 act_ge_property 是两张表。
flowable:
database-schema-update: true
check-process-definitions: false
history-level: audit本地 application.yaml 可以开自动补表。生产、达梦保持 false,表结构以 dump 和当月 update/ 为准。check-process-definitions: false 表示不扫 resources/processes 自动部署。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
formType 10 | 流程表单,绑 bpm_form | BpmModelFormTypeEnum.NORMAL |
formType 20 | 业务表单,填两条 Vue 路径 | BpmModelFormTypeEnum.CUSTOM |
| 演示请假 | oa_leave,表 bpm_oa_leave | BpmOALeaveServiceImpl.PROCESS_KEY |
| 用车 | oa_car_apply_bill | OaBillTypeEnum |
| 入职 | hr_employee_entry_bill | HrmBillTypeEnum |
先对模型再改页面
流程设置里能搜到已发布的 oa_car_apply_bill 等。业务表单自定义路径对 list / info,不要指向已删的 apply/detail。
public static final String PROCESS_KEY = "oa_leave";
OA_CAR_APPLY_BILL("101", "用车申请单","oa_car_apply_bill"),
HRM_EMPLOYEE_ENTRY_BILL("201", "员工入职申请单", "hr_employee_entry_bill"),摘自 BpmOALeaveServiceImpl、OaBillTypeEnum、HrmBillTypeEnum。第三段才是 Flowable 的 KEY_。
示意图:先库和菜单,再对 key,最后接单据或设计器。
旧文 流程引擎开启 已并入本页,请收藏本篇。
