审批转办、委派、抄送
1. 转办与委派
1.1 转办
转办是将任务完全转交给另一个人。
操作流程:
- 审批人 A 点击「转办」
- 选择目标审批人 B
- B 成为新的审批人,A 不再参与
- B 审批完成后,流程继续到下一节点
实现原理:
- 调用
TaskService.setAssignee(taskId, B) - 直接修改任务的
assignee字段 - A 的角色完全被 B 替代
1.2 委派
委派是将任务临时转交给另一个人,对方处理后再转回。
操作流程:
- 审批人 A 点击「委派」
- 选择目标处理人 B
- B 收到委派任务,进行处理
- B 处理完成后(调用
resolveTask),任务自动回到 A - A 继续审批
实现原理:
- 调用
TaskService.delegateTask(taskId, B) - 任务的
owner设为 A,assignee设为 B - B 调用
TaskService.resolveTask()归还 - 任务
assignee恢复为 A
1.3 转办 vs 委派对比
| 维度 | 转办 | 委派 |
|---|---|---|
| 性质 | 永久转交 | 临时转交 |
| 审批人变化 | A → B | A → B → A |
owner | 不变 | 设为 A |
assignee | 改为 B | 改为 B,后恢复 A |
| 适用场景 | 审批人变更 | 征询意见后回来审批 |
2. 抄送
抄送是将审批状态通知给指定人员,不阻塞流程。
2.1 表结构
抄送记录存储在 bpm_process_instance_copy 表:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint | 编号 |
| user_id | bigint | 被抄送人 ID |
| process_instance_id | varchar(64) | 流程实例 ID |
| task_id | varchar(64) | 触发抄送的任务 ID |
| activity_name | varchar(200) | 节点名称 |
| reason | varchar(500) | 抄送原因 |
2.2 发起抄送
抄送可以通过两种方式触发:
- 手动抄送:审批人在审批时选择抄送对象
- 自动抄送:在流程设计时配置抄送节点
2.3 查看抄送
被抄送人在「抄送我的」页面查看收到的抄送:

同一审批默认排重,不重复抄送给同一人。