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
|
* This file is part of Alfresco
|
||||||
*
|
*
|
||||||
@@ -27,6 +27,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
||||||
import org.alfresco.repo.workflow.AbstractWorkflowServiceIntegrationTest;
|
import org.alfresco.repo.workflow.AbstractWorkflowServiceIntegrationTest;
|
||||||
import org.alfresco.repo.workflow.WorkflowModel;
|
import org.alfresco.repo.workflow.WorkflowModel;
|
||||||
@@ -282,6 +283,37 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
|||||||
assertEquals(veryLongTextValue, startTask.getProperties().get(WorkflowModel.PROP_COMMENT));
|
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) {
|
protected String getLongString(int numberOfCharacters) {
|
||||||
StringBuffer stringBuffer = new StringBuffer();
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
for(int i=0; i<numberOfCharacters/10;i++) {
|
for(int i=0; i<numberOfCharacters/10;i++) {
|
||||||
@@ -386,6 +418,11 @@ public class ActivitiWorkflowServiceIntegrationTest extends AbstractWorkflowServ
|
|||||||
return "activiti/testTimer.bpmn20.xml";
|
return "activiti/testTimer.bpmn20.xml";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String getAssignmentListenerDefinitionPath()
|
||||||
|
{
|
||||||
|
return "activiti/testAssignmentListener.bmn20.xml";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected QName getAdhocProcessName()
|
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