Skip to content

流程发起、取消、重新发起

前端: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()

  1. 校验流程定义是否存在且已激活
  2. 校验表单数据
  3. 调用 Flowable RuntimeService 启动流程
  4. 存储流程变量
  5. 返回流程实例 ID

2. 我的流程

「我的流程」页面展示当前用户发起的所有流程:

我的流程

数据来源于 ACT_HI_PROCINST(历史流程实例表)。

2.1 取消流程

发起人可以取消运行中的流程:

  1. 前端调用 DELETE /admin-api/bpm/process-instance/cancel
  2. 后端调用 RuntimeService.deleteProcessInstance()
  3. 流程状态更新为「已取消」
  4. 触发 BpmProcessInstanceStatusEvent 事件

2.2 重新发起

流程被取消或拒绝后,发起人可以重新发起:

  1. 复制原流程的表单数据
  2. 创建新的流程实例
  3. 新流程独立于原流程

3. 流程实例管理(管理员)

管理员可以在「流程实例」页面查看所有用户的流程,支持:

  • 按状态筛选
  • 按发起人筛选
  • 按流程类型筛选
  • 终止/删除流程实例