mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)
76588: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud) 76507: Merged V4.2.3 (4.2.3) to V4.2-BUG-FIX (4.2.4) 76354: MNT-11247 : Additional assignment events triggered at end of workflow Added a test to simulate the issue. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@77655 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2011 Alfresco Software Limited.
|
||||
* Copyright (C) 2005-2014 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
@@ -27,6 +27,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
||||
import org.alfresco.repo.workflow.AbstractWorkflowServiceIntegrationTest;
|
||||
import org.alfresco.repo.workflow.WorkflowModel;
|
||||
@@ -282,6 +283,37 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
||||
assertEquals(veryLongTextValue, startTask.getProperties().get(WorkflowModel.PROP_COMMENT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for MNT-11247
|
||||
*/
|
||||
public void testAssignmentListener()
|
||||
{
|
||||
WorkflowDefinition definition = deployDefinition(getAssignmentListenerDefinitionPath());
|
||||
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||
params.put(ContentModel.PROP_OWNER, USER1);
|
||||
NodeRef assignee = personManager.get(USER1);
|
||||
params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee);
|
||||
WorkflowPath path = workflowService.startWorkflow(definition.getId(), params);
|
||||
|
||||
// end start task
|
||||
List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId());
|
||||
workflowService.endTask(tasks.get(0).getId(), null);
|
||||
|
||||
// end user task 1
|
||||
tasks = workflowService.getTasksForWorkflowPath(path.getId());
|
||||
workflowService.updateTask(tasks.get(0).getId(), params, null, null);
|
||||
workflowService.endTask(tasks.get(0).getId(), null);
|
||||
|
||||
WorkflowTask result = workflowService.getTaskById(tasks.get(0).getId());
|
||||
Map<QName, Serializable> props = result.getProperties();
|
||||
Double create1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "create1"));
|
||||
assertEquals("Create listener was not triggered", new Double(1), create1);
|
||||
Double complete1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "complete1"));
|
||||
assertEquals("Complete listener was not triggered", new Double(1), complete1);
|
||||
Double assignment1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "assignment1"));
|
||||
assertEquals("Assign listener was not triggered", new Double(1), assignment1);
|
||||
}
|
||||
|
||||
protected String getLongString(int numberOfCharacters) {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
for(int i=0; i<numberOfCharacters/10;i++) {
|
||||
@@ -386,6 +418,11 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
||||
return "activiti/testTimer.bpmn20.xml";
|
||||
}
|
||||
|
||||
protected String getAssignmentListenerDefinitionPath()
|
||||
{
|
||||
return "activiti/testAssignmentListener.bmn20.xml";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected QName getAdhocProcessName()
|
||||
{
|
||||
|
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:activiti="http://activiti.org/bpmn"
|
||||
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
||||
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
|
||||
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
|
||||
typeLanguage="http://www.w3.org/2001/XMLSchema"
|
||||
expressionLanguage="http://www.w3.org/1999/XPath"
|
||||
targetNamespace="http://www.activiti.org/test">
|
||||
<process id="testAssignmentListener" name="Test Assignment Listener"
|
||||
isExecutable="true">
|
||||
<startEvent id="startevent1" name="Start" activiti:formKey="wf:submitReviewTask"></startEvent>
|
||||
<userTask id="usertask1" name="User Task 1"
|
||||
activiti:formKey="bpm_foo">
|
||||
<extensionElements>
|
||||
<activiti:taskListener event="assignment"
|
||||
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
|
||||
<activiti:field name="script">
|
||||
<activiti:string>
|
||||
var counter = task.getVariableLocal('bpm_assignment1');
|
||||
if (counter != null)
|
||||
{
|
||||
task.setVariableLocal('bpm_assignment1', counter + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
task.setVariableLocal('bpm_assignment1', 1);
|
||||
}
|
||||
</activiti:string>
|
||||
</activiti:field>
|
||||
</activiti:taskListener>
|
||||
<activiti:taskListener event="create"
|
||||
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
|
||||
<activiti:field name="script">
|
||||
<activiti:string>
|
||||
var counter = task.getVariableLocal('bpm_create1');
|
||||
if (counter != null)
|
||||
{
|
||||
task.setVariableLocal('bpm_create1', counter + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
task.setVariableLocal('bpm_create1', 1);
|
||||
}
|
||||
</activiti:string>
|
||||
</activiti:field>
|
||||
</activiti:taskListener>
|
||||
<activiti:taskListener event="complete"
|
||||
class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
|
||||
<activiti:field name="script">
|
||||
<activiti:string>
|
||||
var counter = task.getVariableLocal('bpm_complete1');
|
||||
if (counter != null)
|
||||
{
|
||||
task.setVariableLocal('bpm_complete1', counter + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
task.setVariableLocal('bpm_complete1', 1);
|
||||
}
|
||||
</activiti:string>
|
||||
</activiti:field>
|
||||
</activiti:taskListener>
|
||||
</extensionElements>
|
||||
</userTask>
|
||||
<endEvent id="endevent1" name="End"></endEvent>
|
||||
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
|
||||
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
|
||||
</process>
|
||||
</definitions>
|
Reference in New Issue
Block a user