|
@@ -76,13 +76,21 @@ public class BpmUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
|
@Override
|
|
@Override
|
|
@DataPermission(enable = false) // 不需要处理数据权限, 不然会有问题,查询不到数据
|
|
@DataPermission(enable = false) // 不需要处理数据权限, 不然会有问题,查询不到数据
|
|
protected void handleAssignments(TaskService taskService, String assignee, String owner, List<String> candidateUsers, List<String> candidateGroups, TaskEntity task, ExpressionManager expressionManager, DelegateExecution execution, ProcessEngineConfigurationImpl processEngineConfiguration) {
|
|
protected void handleAssignments(TaskService taskService, String assignee, String owner, List<String> candidateUsers, List<String> candidateGroups, TaskEntity task, ExpressionManager expressionManager, DelegateExecution execution, ProcessEngineConfigurationImpl processEngineConfiguration) {
|
|
- // 第一步,获得任务的规则
|
|
|
|
- BpmTaskAssignRuleDO rule = getTaskRule(task);
|
|
|
|
- // 第二步,获得任务的候选用户们
|
|
|
|
- Set<Long> candidateUserIds = calculateTaskCandidateUsers(task, rule);
|
|
|
|
- // 第三步,设置一个作为负责人
|
|
|
|
- Long assigneeUserId = chooseTaskAssignee(candidateUserIds);
|
|
|
|
- TaskHelper.changeTaskAssignee(task, String.valueOf(assigneeUserId));
|
|
|
|
|
|
+ boolean isMultiInstance = hasMultiInstanceCharacteristics();
|
|
|
|
+ if(isMultiInstance){
|
|
|
|
+ //多实例 会签/或签,执行多次每个人 待办人都在execution里面获取
|
|
|
|
+ Integer assigneeUserId = execution.getVariableLocal("user", Integer.class);
|
|
|
|
+ TaskHelper.changeTaskAssignee(task, String.valueOf(assigneeUserId));
|
|
|
|
+ }else {
|
|
|
|
+ // 第一步,获得任务的规则
|
|
|
|
+ BpmTaskAssignRuleDO rule = getTaskRule(task);
|
|
|
|
+ // 第二步,获得任务的候选用户们
|
|
|
|
+ Set<Long> candidateUserIds = calculateTaskCandidateUsers(task, rule);
|
|
|
|
+ // 第三步,设置一个作为负责人
|
|
|
|
+ Long assigneeUserId = chooseTaskAssignee(candidateUserIds);
|
|
|
|
+ TaskHelper.changeTaskAssignee(task, String.valueOf(assigneeUserId));
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
private BpmTaskAssignRuleDO getTaskRule(TaskEntity task) {
|
|
private BpmTaskAssignRuleDO getTaskRule(TaskEntity task) {
|