流程实例生命周期
流程实例从发起到结束,经历完整的生命周期。了解生命周期有助于理解流程的运行机制,以及如何处理各种边界情况。
生命周期图
┌─────────────────────────────────────┐
│ ↓
┌─────────┐ ┌──────────────┐ ┌──────────┐
│ 草稿 │ → │ 运行中 │ → │ 已通过 │
└─────────┘ └──────────────┘ └──────────┘
│
↓
┌──────────┐
│ 已驳回 │
└──────────┘
↑
│
┌──────────┐
│ 已撤回 │
└──────────┘状态说明
| 状态 | 说明 | 触发条件 |
|---|---|---|
| 草稿 | 流程定义未发布,无法发起 | — |
| 运行中 | 流程正在执行中 | 用户成功发起申请 |
| 已通过 | 所有节点审批通过,流程完成 | 最后一个审批节点通过 |
| 已驳回 | 某个节点被驳回,流程终止 | 任一审批节点被驳回且策略为终止 |
| 已撤回 | 发起人主动撤回 | 发起人在流程运行中点击撤回 |
发起流程
入口
用户进入「工作流 → 发起申请」,选择已发布的流程定义,即可发起申请。
发起条件
- 流程定义状态必须为「已发布」
- 当前用户必须在流程定义的「发起人范围」内(详见 权限与范围控制)
发起参数
| 参数 | 必填 | 说明 |
|---|---|---|
| definitionId | 是 | 流程定义 ID |
| title | 是 | 申请标题 |
| formData | 否 | 表单数据,键值对对象 |
发起后发生的事件
- 系统校验流程定义有效性和用户权限
- 创建流程实例记录
- 根据流程定义生成首批任务(发起人节点后的第一个/多个节点)
- 触发
instance.created事件 - 触发各任务的
task.created和task.assigned事件 - 实例状态为「运行中」
审批任务
待审批入口
审批人进入「工作流 → 待我审批」,可看到所有待处理的任务。
审批操作
通过:
- 审批人填写意见(可选)后点击「通过」
- 系统根据审批方式(会签/或签/依次审批)判断是否推进流程
- 如果是或签且已通过,同节点的其他待审批任务自动标记为「已跳过」
- 如果是会签,等待所有审批人通过后才推进
- 如果是依次审批,等待当前人通过后才会给下一人生成任务
驳回:
- 审批人填写驳回意见后点击「驳回」
- 根据节点配置的驳回策略执行不同操作:
| 驳回策略 | 行为 |
|---|---|
| 终止流程 | 实例状态变为「已驳回」,流程结束 |
| 退回上一步 | 实例回到上一个审批/办理节点,重新生成任务 |
| 退回发起人 | 实例回到发起人节点,重新发起 |
| 退回指定节点 | 实例回到指定的节点(通过节点标识 key 引用),重新生成任务 |
任务状态流转
待处理 (pending)
├── 通过 → 已通过 (approved)
├── 驳回 → 已驳回 (rejected)
└── 流程退回/撤回 → 已跳过 (skipped)
等待中 (waiting)
└── 前序人员通过后 → 待处理 (pending)撤回流程
入口
发起人进入「工作流 → 我的申请」,找到运行中的流程,点击「撤回」。
撤回条件
- 当前用户必须是发起人
- 流程状态必须为「运行中」
撤回后
- 实例状态变为「已撤回」
- 所有未处理的任务自动标记为「已跳过」
- 触发
instance.withdrawn事件
流程完成
当最后一个审批/办理节点完成,且没有后续节点时,流程实例状态变为「已通过」。
完成条件
- 所有节点任务都已处理(通过或跳过)
- 没有未执行的分支
完成后
- 实例状态为「已通过」
- 触发
instance.approved事件 - 所有任务已处理完毕
异常处理
审批人解析为空
当审批人节点配置的审批人解析为空时(如部门负责人不存在、表单字段为空),根据节点的「空审批人处理策略」自动处理:
| 策略 | 结果 |
|---|---|
| 自动通过 | 节点自动通过,流程继续 |
| 转交管理员 | 任务转交给系统管理员 |
| 自动拒绝 | 节点自动拒绝,流程按驳回策略处理 |
| 转交指定人 | 任务转交给预设人员 |
外部审批派发失败
当外部审批节点派发失败时(网络错误、超时、非 2xx 响应),根据节点的 fallbackStrategy 处理:
| 策略 | 结果 |
|---|---|
| 人工处理(默认) | 任务保持待人工审批状态 |
| 自动通过 | 任务自动通过 |
| 自动拒绝 | 任务自动拒绝 |
实例查询
我的申请
用户查看自己发起的所有流程实例,支持按状态筛选(运行中/已通过/已驳回/已撤回)。
待我审批
用户查看需要自己审批的所有待处理任务,点击可直接进入审批页面。
流程监控(管理员)
管理员可查看全局所有流程实例,支持:
- 按状态统计(运行中/已通过/已驳回/已撤回的数量)
- 按流程名称、发起人、分类筛选
- 查看实例详情和任务流转记录