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
This commit is contained in:
N Smith
2011-03-16 21:01:14 +00:00
parent d6ad3750e3
commit 638ad1b530
5 changed files with 58 additions and 3 deletions

View File

@@ -59,14 +59,14 @@
<humanPerformer>
<resourceAssignmentExpression>
<formalExpression>${review_assignee.properties.userName}</formalExpression>
<formalExpression>${reviewAssignee.properties.userName}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
<!-- For each assignee, task is created -->
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>bpm_assignees</loopDataInputRef>
<inputDataItem name="review_assignee" />
<inputDataItem name="reviewAssignee" />
<completionCondition>${wf_actualPercent >= wf_requiredApprovePercent}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>

View File

@@ -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<QName, Serializable> params = new HashMap<QName, Serializable>();
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<NodeRef> 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<WorkflowTask> 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<WorkflowInstance> 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();
}

View File

@@ -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);

View File

@@ -108,6 +108,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()
{

View File

@@ -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()
{