diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 54f314b059..fb1455ff4f 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -1456,21 +1456,19 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine { // Candidate user addTasksForCandidateUser(firstAuthority, resultingTasks); + if(authorities.size() > 1) { + List remainingAuthorities = authorities.subList(1, authorities.size()); + addTasksForCandidateGroups(remainingAuthorities, resultingTasks); + } } else { // Candidate group - addTasksForCandidateGroup(firstAuthority, resultingTasks); - } - for (int i=1; i tasks = new ArrayList(); - - // Only tasks that have NO assignee, should be returned + // Only tasks that have NO assignee, should be returned for(Task task : resultingTasks.values()) { if(task.getAssignee() == null) @@ -1495,12 +1493,14 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine } } - private void addTasksForCandidateGroup(String groupName, Map resultingTasks) + private void addTasksForCandidateGroups(List groupNames, Map resultingTasks) { - List tasks = taskService.createTaskQuery().taskCandidateGroup(groupName).list(); - for(Task task : tasks) - { - resultingTasks.put(task.getId(), task); + if(groupNames != null && groupNames.size() > 0) { + List tasks = taskService.createTaskQuery().taskCandidateGroupIn(groupNames).list(); + for(Task task : tasks) + { + resultingTasks.put(task.getId(), task); + } } }