Skip to content

流程实例生命周期

流程实例从发起到结束,经历完整的生命周期。了解生命周期有助于理解流程的运行机制,以及如何处理各种边界情况。

生命周期图

         ┌─────────────────────────────────────┐
         │                                     ↓
    ┌─────────┐   ┌──────────────┐   ┌──────────┐
    │  草稿   │ → │   运行中     │ → │  已通过  │
    └─────────┘   └──────────────┘   └──────────┘


                  ┌──────────┐
                  │  已驳回  │
                  └──────────┘


                  ┌──────────┐
                  │  已撤回  │
                  └──────────┘

状态说明

状态说明触发条件
草稿流程定义未发布,无法发起
运行中流程正在执行中用户成功发起申请
已通过所有节点审批通过,流程完成最后一个审批节点通过
已驳回某个节点被驳回,流程终止任一审批节点被驳回且策略为终止
已撤回发起人主动撤回发起人在流程运行中点击撤回

发起流程

入口

用户进入「工作流 → 发起申请」,选择已发布的流程定义,即可发起申请。

发起条件

  • 流程定义状态必须为「已发布」
  • 当前用户必须在流程定义的「发起人范围」内(详见 权限与范围控制

发起参数

参数必填说明
definitionId流程定义 ID
title申请标题
formData表单数据,键值对对象

发起后发生的事件

  1. 系统校验流程定义有效性和用户权限
  2. 创建流程实例记录
  3. 根据流程定义生成首批任务(发起人节点后的第一个/多个节点)
  4. 触发 instance.created 事件
  5. 触发各任务的 task.createdtask.assigned 事件
  6. 实例状态为「运行中」

审批任务

待审批入口

审批人进入「工作流 → 待我审批」,可看到所有待处理的任务。

审批操作

通过

  • 审批人填写意见(可选)后点击「通过」
  • 系统根据审批方式(会签/或签/依次审批)判断是否推进流程
  • 如果是或签且已通过,同节点的其他待审批任务自动标记为「已跳过」
  • 如果是会签,等待所有审批人通过后才推进
  • 如果是依次审批,等待当前人通过后才会给下一人生成任务

驳回

  • 审批人填写驳回意见后点击「驳回」
  • 根据节点配置的驳回策略执行不同操作:
驳回策略行为
终止流程实例状态变为「已驳回」,流程结束
退回上一步实例回到上一个审批/办理节点,重新生成任务
退回发起人实例回到发起人节点,重新发起
退回指定节点实例回到指定的节点(通过节点标识 key 引用),重新生成任务

任务状态流转

待处理 (pending)
    ├── 通过 → 已通过 (approved)
    ├── 驳回 → 已驳回 (rejected)
    └── 流程退回/撤回 → 已跳过 (skipped)

等待中 (waiting)
    └── 前序人员通过后 → 待处理 (pending)

撤回流程

入口

发起人进入「工作流 → 我的申请」,找到运行中的流程,点击「撤回」。

撤回条件

  • 当前用户必须是发起人
  • 流程状态必须为「运行中」

撤回后

  1. 实例状态变为「已撤回」
  2. 所有未处理的任务自动标记为「已跳过」
  3. 触发 instance.withdrawn 事件

流程完成

当最后一个审批/办理节点完成,且没有后续节点时,流程实例状态变为「已通过」。

完成条件

  • 所有节点任务都已处理(通过或跳过)
  • 没有未执行的分支

完成后

  • 实例状态为「已通过」
  • 触发 instance.approved 事件
  • 所有任务已处理完毕

异常处理

审批人解析为空

当审批人节点配置的审批人解析为空时(如部门负责人不存在、表单字段为空),根据节点的「空审批人处理策略」自动处理:

策略结果
自动通过节点自动通过,流程继续
转交管理员任务转交给系统管理员
自动拒绝节点自动拒绝,流程按驳回策略处理
转交指定人任务转交给预设人员

外部审批派发失败

当外部审批节点派发失败时(网络错误、超时、非 2xx 响应),根据节点的 fallbackStrategy 处理:

策略结果
人工处理(默认)任务保持待人工审批状态
自动通过任务自动通过
自动拒绝任务自动拒绝

实例查询

我的申请

用户查看自己发起的所有流程实例,支持按状态筛选(运行中/已通过/已驳回/已撤回)。

待我审批

用户查看需要自己审批的所有待处理任务,点击可直接进入审批页面。

流程监控(管理员)

管理员可查看全局所有流程实例,支持:

  • 按状态统计(运行中/已通过/已驳回/已撤回的数量)
  • 按流程名称、发起人、分类筛选
  • 查看实例详情和任务流转记录

Built with VitePress for local documentation preview.