mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
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:
@@ -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>
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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()
|
||||
|
@@ -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()
|
||||
{
|
||||
|
Reference in New Issue
Block a user