Activiti动态审批实现方案

时间:2024-04-10 15:10:48

工作流系统特性:

Activiti动态审批实现方案

动态审批实现方案:

一、采用监听器实现方案

二、扩展参与人适配器实现方案

三、采用指派实现动态审批方案

 

人员信息存储

  • act_ru_identitylink表存放组任务的办理人,表示正在执行的任务
  • act_hi_identitylink表存放所有任务的办理人,包括个人任务和组任务表示历史任务

taskService.addUserIdentityLink(task.getId(), "user102", IdentityLinkType.CANDIDATE);

这个方法各向act_ru_identitylink表和act_hi_identitylink表中插入taskId、userId、type为candidate的一条记录

taskService.addUserIdentityLink(task.getId(), "user102", IdentityLinkType.OWNER);

这个方法向act_ru_task表中修改id为taskId的记录的OWNER字段为userId

taskService.addUserIdentityLink(task.getId(), "user102", IdentityLinkType.ASSIGNEE);

这个方法向act_ru_task表中修改id为taskId的记录的ASSIGNEE字段为userId

taskService.getIdentityLinksForTask("task102");
这个方法调用会查出act_ru_identitylink表中TASK_ID字段为taskId的记录 以及 act_ru_task表中OWNER、ASSIGNEE两个字段中非空的字段生成对应的IdentityLink对象。

如果OWNER字段非空会生成一个IdentityLink对象,包含了OWNER和TASK的相关属性。如果ASSIGNEE字段非空,也会生成一个单独的IdentityLink对象包含ASSIGNEE和TASK相关属性。

其中的原因就是,owner是任务所有者只能是一个,assignee是任务确定的接收者,也只能是一个,candidate是可领取任务的人,那么就会有很多,所以candidate单独放在identitylink表中关联task,而前两个就直接在task表中标明即可,统计的时候这三种情况都要统计进去。

分配个人任务的三种方式

一、直接指定

二、参数指定

三、监听器指定