流程发起、取消、重新发起
前端:Vue3 + Vben Admin + Ant Design Vue;流程相关页面源码位于 ruoyi-office-vben/apps/web-antd/src/views/bpm。
1. 发起流程
1.1 表结构
Flowable 使用冷热分离的数据存储:
- 运行时:
ACT_RU_EXECUTION(执行实例)、ACT_RU_VARIABLE(变量) - 历史:
ACT_HI_PROCINST(历史流程实例)、ACT_HI_VARINST(历史变量)
运行中的流程数据在运行时表中,流程结束后自动迁移到历史表。
1.2 流程状态
RuoYi Office 定义了 4 种流程状态(BpmProcessInstanceStatusEnum):
| 状态 | 值 | 说明 |
|---|---|---|
| 运行中 | 1 | 流程正在审批中 |
| 审批通过 | 2 | 所有审批节点通过 |
| 审批不通过 | 3 | 流程被拒绝 |
| 已取消 | 4 | 流程被发起人取消 |
1.3 发起流程
用户通过「发起流程」页面选择流程模板并填写表单:

后端调用 RuntimeService.startProcessInstanceByKey() 启动流程实例。
1.4 具体实现
发起流程的核心代码在 BpmProcessInstanceServiceImpl.createProcessInstance():
- 校验流程定义是否存在且已激活
- 校验表单数据
- 调用 Flowable
RuntimeService启动流程 - 存储流程变量
- 返回流程实例 ID
2. 我的流程
「我的流程」页面展示当前用户发起的所有流程:

数据来源于 ACT_HI_PROCINST(历史流程实例表)。
2.1 取消流程
发起人可以取消运行中的流程:
- 前端调用
DELETE /admin-api/bpm/process-instance/cancel - 后端调用
RuntimeService.deleteProcessInstance() - 流程状态更新为「已取消」
- 触发
BpmProcessInstanceStatusEvent事件
2.2 重新发起
流程被取消或拒绝后,发起人可以重新发起:
- 复制原流程的表单数据
- 创建新的流程实例
- 新流程独立于原流程
3. 流程实例管理(管理员)
管理员可以在「流程实例」页面查看所有用户的流程,支持:
- 按状态筛选
- 按发起人筛选
- 按流程类型筛选
- 终止/删除流程实例