diff --git a/config/alfresco/messages/bpm-messages.properties b/config/alfresco/messages/bpm-messages.properties index ddfee4d3d2..8f398a14ae 100644 --- a/config/alfresco/messages/bpm-messages.properties +++ b/config/alfresco/messages/bpm-messages.properties @@ -25,7 +25,7 @@ bpm_businessprocessmodel.property.bpm_priority.description=Priority bpm_businessprocessmodel.property.bpm_percentComplete.title=Percent Complete bpm_businessprocessmodel.property.bpm_percentComplete.description=Percent Complete bpm_businessprocessmodel.association.bpm_pooledActors.title=Pooled Users -bpm_businessprocessmodel.association.bpm_pooledActors.title=The users who may take ownership of the task +bpm_businessprocessmodel.association.bpm_pooledActors.title=Pool # Workflow Task bpm_businessprocessmodel.type.bpm_workflowTask.title=Worflow Task diff --git a/config/alfresco/model/bpmModel.xml b/config/alfresco/model/bpmModel.xml index 98e30814de..2f212feb86 100644 --- a/config/alfresco/model/bpmModel.xml +++ b/config/alfresco/model/bpmModel.xml @@ -10,6 +10,8 @@ + + @@ -146,7 +148,8 @@ false - cm:person + + sys:base false true diff --git a/config/alfresco/workflow-context.xml b/config/alfresco/workflow-context.xml index d6bbad2982..5daf205a59 100644 --- a/config/alfresco/workflow-context.xml +++ b/config/alfresco/workflow-context.xml @@ -15,6 +15,7 @@ + @@ -89,7 +90,6 @@ - ${spaces.store} diff --git a/source/java/org/alfresco/repo/action/ActionServiceImpl.java b/source/java/org/alfresco/repo/action/ActionServiceImpl.java index e81db779ec..bb4c25e980 100644 --- a/source/java/org/alfresco/repo/action/ActionServiceImpl.java +++ b/source/java/org/alfresco/repo/action/ActionServiceImpl.java @@ -221,7 +221,15 @@ public class ActionServiceImpl implements ActionService, RuntimeActionService, A */ public ActionDefinition getActionDefinition(String name) { - return this.actionDefinitions.get(name); + // get direct access to action definition (i.e. ignoring public flag of executer) + ActionDefinition definition = null; + Object bean = this.applicationContext.getBean(name); + if (bean != null && bean instanceof ActionExecuter) + { + ActionExecuter executer = (ActionExecuter)bean; + definition = executer.getActionDefinition(); + } + return definition; } /** diff --git a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java index 4b9f38f747..d05902f370 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java @@ -22,8 +22,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.security.AuthorityService; +import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.workflow.WorkflowDefinition; import org.alfresco.service.cmr.workflow.WorkflowDeployment; import org.alfresco.service.cmr.workflow.WorkflowException; @@ -49,9 +52,20 @@ public class WorkflowServiceImpl implements WorkflowService private static Log logger = LogFactory.getLog("org.alfresco.repo.workflow"); // Dependent services + private AuthorityService authorityService; private BPMEngineRegistry registry; private WorkflowPackageComponent workflowPackageComponent; + + /** + * Sets the Authority Service + * + * @param authorityService + */ + public void setAuthorityService(AuthorityService authorityService) + { + this.authorityService = authorityService; + } /** * Sets the BPM Engine Registry @@ -288,10 +302,13 @@ public class WorkflowServiceImpl implements WorkflowService */ public List getPooledTasks(String authority) { - // TODO: Expand authorities to include associated groups (and parent groups) + // Expand authorities to include associated groups (and parent groups) List authorities = new ArrayList(); authorities.add(authority); - + Set parents = authorityService.getContainingAuthorities(AuthorityType.GROUP, authority, false); + authorities.addAll(parents); + + // Retrieve pooled tasks for authorities (from each of the registered task components) List tasks = new ArrayList(10); String[] ids = registry.getTaskComponents(); for (String id: ids) diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index 215e0eaa6d..e97b7f7467 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -51,7 +50,6 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.PersonService; import org.alfresco.service.cmr.workflow.WorkflowDefinition; @@ -112,7 +110,6 @@ public class JBPMEngine extends BPMEngine protected NodeService nodeService; protected ServiceRegistry serviceRegistry; protected PersonService personService; - protected AuthorityService authorityService; protected AuthorityDAO authorityDAO; protected JbpmTemplate jbpmTemplate; @@ -188,16 +185,6 @@ public class JBPMEngine extends BPMEngine { this.personService = personService; } - - /** - * Sets the Authority Service - * - * @param authorityService - */ - public void setAuthorityService(AuthorityService authorityService) - { - this.authorityService = authorityService; - } /** * Sets the Authority DAO @@ -857,17 +844,9 @@ public class JBPMEngine extends BPMEngine { public List doInJbpm(JbpmContext context) { - // flatten authorities to include all parent authorities - Set flattenedAuthorities = new HashSet(); - for (String authority : authorities) - { - Set parents = authorityService.getContainingAuthorities(AuthorityType.GROUP, authority, false); - flattenedAuthorities.addAll(parents); - } - // retrieve pooled tasks for all flattened authorities TaskMgmtSession taskSession = context.getTaskMgmtSession(); - List tasks = taskSession.findPooledTaskInstances(new ArrayList(flattenedAuthorities)); + List tasks = taskSession.findPooledTaskInstances(authorities); List workflowTasks = new ArrayList(tasks.size()); for (TaskInstance task : tasks) { @@ -1406,7 +1385,16 @@ public class JBPMEngine extends BPMEngine List pooledNodeRefs = new ArrayList(pooledActors.size()); for (PooledActor pooledActor : (Set)pooledActors) { - NodeRef pooledNodeRef = mapNameToAuthority(pooledActor.getActorId()); + NodeRef pooledNodeRef = null; + String pooledActorId = pooledActor.getActorId(); + if (AuthorityType.getAuthorityType(pooledActorId) == AuthorityType.GROUP) + { + pooledNodeRef = mapNameToAuthority(pooledActorId); + } + else + { + pooledNodeRef = mapNameToPerson(pooledActorId); + } if (pooledNodeRef != null) { pooledNodeRefs.add(pooledNodeRef); @@ -1529,12 +1517,20 @@ public class JBPMEngine extends BPMEngine int i = 0; for (JBPMNode actor : actors) { - pooledActors[i++] = actor.getName(); + if (actor.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER)) + { + pooledActors[i++] = (String)actor.getProperties().get(ContentModel.PROP_AUTHORITY_NAME); + } + else + { + pooledActors[i++] = actor.getName(); + } } } else if (value instanceof JBPMNode) { - pooledActors = new String[] {((JBPMNode)value).getName()}; + JBPMNode node = (JBPMNode)value; + pooledActors = new String[] {(node.getType().equals(ContentModel.TYPE_AUTHORITY_CONTAINER)) ? (String)node.getProperties().get(ContentModel.PROP_AUTHORITY_NAME) : node.getName()}; } else { diff --git a/source/java/org/alfresco/repo/workflow/jbpm/test_groups.xml b/source/java/org/alfresco/repo/workflow/jbpm/test_groups.xml index 5456b9e080..5f35f346b6 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/test_groups.xml +++ b/source/java/org/alfresco/repo/workflow/jbpm/test_groups.xml @@ -18,7 +18,8 @@ - + +