03-06-2012 03:39 AM
<process id="mainProcess" name="MainProcess">
<documentation>Main Process for testing purposes. Contains a call activiti with a place holder as calledElement</documentation>
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="mainProcessUserTask" name="User Task" activiti:candidateGroups="players"></userTask>
<endEvent id="endevent1" name="End"></endEvent>
<callActivity id="mainProcessCallActivity" name="Call activity" calledElement="${subProcess}"></callActivity>
<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="mainProcessUserTask"></sequenceFlow>
<sequenceFlow id="flow2" name="" sourceRef="mainProcessUserTask" targetRef="mainProcessCallActivity"></sequenceFlow>
<sequenceFlow id="flow3" name="" sourceRef="mainProcessCallActivity" targetRef="endevent1"></sequenceFlow>
</process>
<process id="subProcess1" name="SubProcess1">
<documentation>Subprocess 1</documentation>
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="subProcess1UserTask" name="User Task" activiti:candidateGroups="HeadMembers"></userTask>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="subProcess1UserTask"></sequenceFlow>
<sequenceFlow id="flow2" name="" sourceRef="subProcess1UserTask" targetRef="endevent1"></sequenceFlow>
</process>
<process id="subProcess2" name="SubProcess2">
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="subProcess2UserTask" name="User Task" activiti:candidateUsers="HumanResources"></userTask>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="subProcess2UserTask"></sequenceFlow>
<sequenceFlow id="flow2" name="" sourceRef="subProcess2UserTask" targetRef="endevent1"></sequenceFlow>
</process>
@Deployment(resources= {"diagrams/MainProcess.bpmn20.xml", "diagrams/SubProcess1.bpmn20.xml", "diagrams/SubProcess2.bpmn20.xml"})
public void testSubProcessWithPlaceholder(){
System.out.println("SubProcessWithPlaceholder");
// Start the first instance of the main process
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("mainProcess");
//Get the user task and check it
Task task1 = taskService.createTaskQuery().processInstanceId(processInstance1.getId()).singleResult();
assertNotNull(task1);
assertEquals("mainProcessUserTask", task1.getTaskDefinitionKey());
// set the variable which subprocess should be started - tis thime subProcess1
taskService.setVariable(task1.getId(), "subProcess", "subProcess1");
taskService.complete(task1.getId());
// check if process went to subprocess 1 and is currently in subProcess1UserTask
task1 = taskService.createTaskQuery().taskDefinitionKey("subProcess1UserTask").singleResult();
assertNotNull(task1);
taskService.complete(task1.getId());
assertEquals(0, runtimeService.createProcessInstanceQuery().count());
// Start the second instance of the main process
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("mainProcess");
//Get the user task and check it
Task task2 = taskService.createTaskQuery().processInstanceId(processInstance2.getId()).singleResult();
assertNotNull(task2);
assertEquals("mainProcessUserTask", task2.getTaskDefinitionKey());
// set the variable which subprocess should be started - this time subProcess2
taskService.setVariable(task2.getId(), "subProcessPlaceholder", "subProcess2");
taskService.complete(task2.getId());
// the process was routed to subProcess1, so subProcess2UserTask is null
task2 = taskService.createTaskQuery().taskDefinitionKey("subProcess2UserTask").singleResult();
assertNull(task2);
// but because the process was routed to SubProcess1 subProcess1UserTask exists
task2 = taskService.createTaskQuery().taskDefinitionKey("subProcess1UserTask").singleResult();
assertNotNull(task2);
taskService.complete(task2.getId());
assertEquals(0, runtimeService.createProcessInstanceQuery().count());
}
03-06-2012 04:20 AM
03-29-2012 04:25 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.