ALF-10598: Activiti now offers single query for multiple candidate groups + hooked into ActivitiWorkflowEngine

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31041 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Frederik Heremans
2011-10-07 12:07:55 +00:00
parent 4333a9e7b2
commit a5e1994c86

View File

@@ -1456,20 +1456,18 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
{
// Candidate user
addTasksForCandidateUser(firstAuthority, resultingTasks);
if(authorities.size() > 1) {
List<String> remainingAuthorities = authorities.subList(1, authorities.size());
addTasksForCandidateGroups(remainingAuthorities, resultingTasks);
}
}
else
{
// Candidate group
addTasksForCandidateGroup(firstAuthority, resultingTasks);
}
for (int i=1; i<authorities.size(); i++)
{
// All folowing authorities are groups, just add the cadidate-group tasks
addTasksForCandidateGroup(authorities.get(i), resultingTasks);
addTasksForCandidateGroups(authorities, resultingTasks);
}
List<Task> tasks = new ArrayList<Task>();
// Only tasks that have NO assignee, should be returned
for(Task task : resultingTasks.values())
{
@@ -1495,14 +1493,16 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
}
}
private void addTasksForCandidateGroup(String groupName, Map<String, Task> resultingTasks)
private void addTasksForCandidateGroups(List<String> groupNames, Map<String, Task> resultingTasks)
{
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(groupName).list();
if(groupNames != null && groupNames.size() > 0) {
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroupIn(groupNames).list();
for(Task task : tasks)
{
resultingTasks.put(task.getId(), task);
}
}
}
private void addTasksForCandidateUser(String userName, Map<String, Task> resultingTasks)
{