From 638ad1b530d4dee81d5207c44c20f4a5ae1ad1d5 Mon Sep 17 00:00:00 2001 From: N Smith Date: Wed, 16 Mar 2011 21:01:14 +0000 Subject: [PATCH] Fixed a problem where the Activiti Parallel Review workflow was throwing exceptions because it contained a variable 'review_assignee'. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@26255 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../workflow/parallel-review.bpmn20.xml | 4 +- ...bstractWorkflowServiceIntegrationTest.java | 40 ++++++++++++++++++- .../repo/workflow/WorkflowQNameConverter.java | 5 +++ ...ctivitiWorkflowServiceIntegrationTest.java | 6 +++ .../JbpmWorkflowServiceIntegrationTest.java | 6 +++ 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/config/alfresco/workflow/parallel-review.bpmn20.xml b/config/alfresco/workflow/parallel-review.bpmn20.xml index de9a43b5ff..f48f78d24e 100644 --- a/config/alfresco/workflow/parallel-review.bpmn20.xml +++ b/config/alfresco/workflow/parallel-review.bpmn20.xml @@ -59,14 +59,14 @@ - ${review_assignee.properties.userName} + ${reviewAssignee.properties.userName} bpm_assignees - + ${wf_actualPercent >= wf_requiredApprovePercent} diff --git a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java index 3e218a5976..309577873f 100644 --- a/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/AbstractWorkflowServiceIntegrationTest.java @@ -707,6 +707,43 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT checkWorkflows(workflows, expectedIds); } + public void testParallelReview() throws Exception + { + // start pooled review and approve workflow + WorkflowDefinition workflowDef = deployDefinition(getParallelReviewDefinitionPath()); + assertNotNull(workflowDef); + + // Create workflow parameters + Map params = new HashMap(); + Serializable wfPackage = workflowService.createPackage(null); + params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); + Date dueDate = new Date(); + params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, dueDate); + params.put(WorkflowModel.PROP_WORKFLOW_PRIORITY, 1); + NodeRef group = groupManager.get(GROUP); + assertNotNull(group); + + List assignees = Arrays.asList(personManager.get(USER2), personManager.get(USER3)); + params.put(WorkflowModel.ASSOC_ASSIGNEES, (Serializable) assignees); + + // Start a workflow instance + WorkflowPath path = workflowService.startWorkflow(workflowDef.getId(), params); + assertNotNull(path); + assertTrue(path.isActive()); + String instnaceId = path.getInstance().getId(); + + WorkflowTask startTask = workflowService.getStartTask(instnaceId); + workflowService.endTask(startTask.getId(), null); + + personManager.setUser(USER2); + List tasks = workflowService.getAssignedTasks(USER2, WorkflowTaskState.IN_PROGRESS); + assertEquals(1, tasks.size()); + + personManager.setUser(USER3); + tasks = workflowService.getAssignedTasks(USER3, WorkflowTaskState.IN_PROGRESS); + assertEquals(1, tasks.size()); + } + public void checkCompletedWorkflows(String defId, String... expectedIds) { List workflows = workflowService.getCompletedWorkflows(defId); @@ -922,7 +959,6 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT assertEquals(expDef.getVersion(), actualDef.getVersion()); } - @SuppressWarnings("deprecation") @Override protected void onSetUpInTransaction() throws Exception @@ -979,5 +1015,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT protected abstract String getPooledReviewDefinitionPath(); + protected abstract String getParallelReviewDefinitionPath(); + protected abstract String getTestTimerDefinitionPath(); } diff --git a/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java b/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java index 874240a08e..291f5fe71e 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java @@ -20,6 +20,7 @@ package org.alfresco.repo.workflow; import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; /** @@ -69,6 +70,10 @@ public class WorkflowQNameConverter String qName = name; if(name.indexOf(QName.NAMESPACE_PREFIX)==-1) { + if(name.indexOf('_')==-1) + { + return QName.createQName(NamespaceService.DEFAULT_URI, name); + } qName = name.replaceFirst("_", ":"); } return QName.createQName(qName, prefixResolver); diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java index cfe0174a15..45de1b7cec 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowServiceIntegrationTest.java @@ -107,6 +107,12 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ { return "alfresco/workflow/review-pooled.bpmn20.xml"; } + + @Override + protected String getParallelReviewDefinitionPath() + { + return "alfresco/workflow/parallel-review.bpmn20.xml"; + } @Override protected String getTestTimerDefinitionPath() diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java b/source/java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java index f066fb0647..64f922f6f5 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java @@ -55,6 +55,12 @@ public class JbpmWorkflowServiceIntegrationTest extends AbstractWorkflowServiceI return "alfresco/workflow/review_pooled_processdefinition.xml"; } + @Override + protected String getParallelReviewDefinitionPath() + { + return "alfresco/workflow/parallelreview_processdefinition.xml"; + } + @Override protected String getTestTimerDefinitionPath() {