审批转办、委派、抄送

来源:https://cloud.iocoder.cn/bpm/task-delegation-and-cc/

1. 转办、委派

转办和委托,两者的区别在于是不是真的转给对方,对比如下:

1.1 转办

转办,简单来说,就是 真的 换一个 assignee 审批人,对应界面如下:

转办

对应后端的 BpmTaskController 提供的 #transferTask(...) 接口。如下图所示:

图片纠错:最新版本将 yudao-module-bpm-biz 子模块,重命名为 yudao-module-bpm-server 子模块,更好表达它是一个服务

转办的实现

1.2 委派

委派,简单来说,只是 临时 换一个 assignee 审批人,干完活还要交回来,对应界面如下:

委派

它对应两个流程:

① A 转给其 B 审批,对应后端的 BpmTaskController 提供的 #delegateTask(...) 接口。如下图所示:

图片纠错:最新版本将 yudao-module-bpm-biz 子模块,重命名为 yudao-module-bpm-server 子模块,更好表达它是一个服务

委派的实现

② B 审批后,转给 A,对应后端的 BpmTaskController 提供的 #approveTask(...) 接口。如下图所示:

图片纠错:最新版本将 yudao-module-bpm-biz 子模块,重命名为 yudao-module-bpm-server 子模块,更好表达它是一个服务

审批委派的实现

2. 抄送

抄送,将审批结果,通知给抄送列表对应的人。

2.1 表结构

抄送表,是我们自己定义的 bpm_process_instance_copy 表,结构如下:

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `bpm_process_instance_copy` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `user_id` bigint NOT NULL DEFAULT '0' COMMENT '用户编号,被抄送人',

  `start_user_id` bigint NOT NULL DEFAULT '0' COMMENT '发起流程的用户编号',
  `process_instance_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '流程实例的id',
  `process_instance_name` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '流程实例的名字',

  `category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '流程定义的分类',

  `task_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '发起抄送的任务编号',
  `task_name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '任务的名字',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='BPM 流程实例抄送表';

比较简单,就是存储下关联的 user_idprocess_instance_idtask_id 等信息。

2.2 发起抄送

审批通过、不通过时,可以选择抄送的人,对应界面如下:

发起抄送

对应的后端代码,如下图所示:

图片纠错:最新版本将 yudao-module-bpm-biz 子模块,重命名为 yudao-module-bpm-server 子模块,更好表达它是一个服务

发起抄送的实现

2.3 查看抄送

被抄送人,可以在 [工作流程 -> 审批中心 -> 抄送我的] 菜单,查看到抄送列表,对应界面如下:

抄送我的