关于Activiti中taskService的addUserIdentityLink方法的数据库操作

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表中标明即可,统计的时候这三种情况都要统计进去。

你可能感兴趣的:(Java)