工作流系统特性:
动态审批实现方案:
一、采用监听器实现方案
二、扩展参与人适配器实现方案
三、采用指派实现动态审批方案
人员信息存储
- 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表中标明即可,统计的时候这三种情况都要统计进去。
分配个人任务的三种方式
一、直接指定
二、参数指定
三、监听器指定