protected static BpmnModelInstance setupProcess(String eventName) { return Bpmn.createExecutableProcess(TASK_LISTENER_PROCESS) .startEvent() .userTask(ACTIVITY_ID) .camundaTaskListenerClass(eventName,COMPLETE_LISTENER) .endEvent() .done(); }
protected BpmnModelInstance createModelTaskListener(String listener) { return Bpmn.createExecutableProcess(PROCESS_KEY) .startEvent("startEvent") .userTask("userTask1").name("User task") .camundaTaskListenerClass(listener, SetBusinessKeyListener.class) .userTask("userTask2") .endEvent("endEvent") .done(); }
@Test public void testCompleteTaskInCreateTaskListenerWithIdentityLinks() { // given process with user task, identity links and task create listener BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("startToEnd") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskCreateListener.class.getName()) .name("userTask") .camundaCandidateUsers(Arrays.asList(new String[]{"users1", "user2"})) .camundaCandidateGroups(Arrays.asList(new String[]{"group1", "group2"})) .endEvent().done(); testRule.deploy(modelInstance); // when process is started and user task completed in task create listener runtimeService.startProcessInstanceByKey("startToEnd"); // then task is successfully completed without an exception assertNull(taskService.createTaskQuery().singleResult()); }
@Test public void testActivityInstanceIdOnDeleteInCalledProcess() { // given RecorderTaskListener.clear(); BpmnModelInstance callActivityProcess = Bpmn.createExecutableProcess("calling") .startEvent() .callActivity() .calledElement("called") .endEvent() .done(); BpmnModelInstance calledProcess = Bpmn.createExecutableProcess("called") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, RecorderTaskListener.class.getName()) .camundaTaskListenerClass(TaskListener.EVENTNAME_DELETE, RecorderTaskListener.class.getName()) .endEvent() .done(); testRule.deploy(callActivityProcess, calledProcess); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("calling"); // when runtimeService.deleteProcessInstance(processInstance.getId(), null); // then List<RecordedTaskEvent> recordedEvents = RecorderTaskListener.getRecordedEvents(); assertEquals(2, recordedEvents.size()); String createActivityInstanceId = recordedEvents.get(0).getActivityInstanceId(); String deleteActivityInstanceId = recordedEvents.get(1).getActivityInstanceId(); assertEquals(createActivityInstanceId, deleteActivityInstanceId); }
@Test public void testCompleteTaskInCreateTaskListener() { // given process with user task and task create listener BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("startToEnd") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskCreateListener.class.getName()) .name("userTask") .endEvent().done(); testRule.deploy(modelInstance); // when process is started and user task completed in task create listener runtimeService.startProcessInstanceByKey("startToEnd"); // then task is successfully completed without an exception assertNull(taskService.createTaskQuery().singleResult()); }
@Test public void testSetLocalScopeWithTaskListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .userTask().id("activityId") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskListener.class) .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetLocalScopeInSubprocessWithTaskListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent() .userTask().id("activityId") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskListener.class) .endEvent() .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testCompleteTaskOnCreateListenerWithFollowingCallActivity() { final BpmnModelInstance subProcess = Bpmn.createExecutableProcess("subProc") .startEvent() .userTask("calledTask") .endEvent() .done(); final BpmnModelInstance instance = Bpmn.createExecutableProcess("mainProc") .startEvent() .userTask("mainTask") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, CreateTaskListener.class.getName()) .callActivity().calledElement("subProc") .endEvent() .done(); testRule.deploy(subProcess); testRule.deploy(instance); engineRule.getRuntimeService().startProcessInstanceByKey("mainProc"); Task task = engineRule.getTaskService().createTaskQuery().singleResult(); Assert.assertEquals(task.getTaskDefinitionKey(), "calledTask"); }
@Test public void testAssignmentTaskListenerWhenSavingTask() { AssignmentTaskListener.reset(); final BpmnModelInstance process = Bpmn.createExecutableProcess("process") .startEvent() .userTask("task") .camundaTaskListenerClass("assignment", AssignmentTaskListener.class) .endEvent() .done(); testRule.deploy(process); engineRule.getRuntimeService().startProcessInstanceByKey("process"); // given Task task = engineRule.getTaskService().createTaskQuery().singleResult(); // when task.setAssignee("gonzo"); engineRule.getTaskService().saveTask(task); // then assertEquals(1, AssignmentTaskListener.eventCounter); }
@Test public void testVariableAccessOnDeleteInCalledProcess() { // given VariablesCollectingListener.reset(); BpmnModelInstance callActivityProcess = Bpmn.createExecutableProcess("calling") .startEvent() .callActivity() .camundaIn("foo", "foo") .calledElement("called") .endEvent() .done(); BpmnModelInstance calledProcess = Bpmn.createExecutableProcess("called") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_DELETE, VariablesCollectingListener.class.getName()) .endEvent() .done(); testRule.deploy(callActivityProcess, calledProcess); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("calling", Variables.createVariables().putValue("foo", "bar")); // when runtimeService.deleteProcessInstance(processInstance.getId(), null); // then VariableMap collectedVariables = VariablesCollectingListener.getCollectedVariables(); assertNotNull(collectedVariables); assertEquals(1, collectedVariables.size()); assertEquals("bar", collectedVariables.get("foo")); }
@Test public void modifyAProcessInstanceWithLocalVariableCreation() { // given a process that sets a local variable when entering the user task BpmnModelInstance instance = Bpmn.createExecutableProcess("Process") .startEvent() .userTask("userTask") .camundaTaskListenerClass("create", "org.camunda.bpm.engine.test.api.runtime.util.CreateLocalVariableEventListener") .endEvent() .done(); testHelper.deployAndGetDefinition(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstance.getId()); // when I start another activity and delete the old one runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("userTask") .cancelActivityInstance(updatedTree.getActivityInstances("userTask")[0].getId()) .execute(false, false); // then migration was successful and I can finish the process Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); testHelper.assertProcessEnded(processInstance.getId()); }
@Test public void testRemoveExecutionSequence() { // given BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("singleTaskProcess") .startEvent() .userTask("taskWithLocalVariables") .camundaExecutionListenerClass("start", TestLocalVariableExecutionListener.class) .camundaTaskListenerClass("delete", TestLocalVariableTaskListener.class) .boundaryEvent() .signal("interruptSignal") .endEvent() .moveToActivity("taskWithLocalVariables") .endEvent() .done(); testRule.deploy(modelInstance); ProcessInstance pi = processEngineRule.getRuntimeService() .startProcessInstanceByKey("singleTaskProcess"); Execution execution = processEngineRule.getRuntimeService() .createExecutionQuery() .variableValueEquals("localVar", "localVarVal") .singleResult(); // when assertNotNull(execution); assertEquals(pi.getId(), execution.getProcessInstanceId()); processEngineRule.getRuntimeService().signal(execution.getId()); // then (see #TestLocalVariableTaskListener::notify) }
protected static BpmnModelInstance setupProcess(String eventName) { return Bpmn.createExecutableProcess(TASK_LISTENER_PROCESS) .startEvent() .userTask(ACTIVITY_ID) .camundaTaskListenerClass(eventName,COMPLETE_LISTENER) .endEvent() .done(); }
protected BpmnModelInstance createModelTaskListener(String listener) { return Bpmn.createExecutableProcess(PROCESS_KEY) .startEvent("startEvent") .userTask("userTask1").name("User task") .camundaTaskListenerClass(listener, SetBusinessKeyListener.class) .userTask("userTask2") .endEvent("endEvent") .done(); }
@Test public void testCompleteTaskInCreateTaskListenerWithIdentityLinks() { // given process with user task, identity links and task create listener BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("startToEnd") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskCreateListener.class.getName()) .name("userTask") .camundaCandidateUsers(Arrays.asList(new String[]{"users1", "user2"})) .camundaCandidateGroups(Arrays.asList(new String[]{"group1", "group2"})) .endEvent().done(); testRule.deploy(modelInstance); // when process is started and user task completed in task create listener runtimeService.startProcessInstanceByKey("startToEnd"); // then task is successfully completed without an exception assertNull(taskService.createTaskQuery().singleResult()); }
@Test public void testCompleteTaskInCreateTaskListener() { // given process with user task and task create listener BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("startToEnd") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskCreateListener.class.getName()) .name("userTask") .endEvent().done(); testRule.deploy(modelInstance); // when process is started and user task completed in task create listener runtimeService.startProcessInstanceByKey("startToEnd"); // then task is successfully completed without an exception assertNull(taskService.createTaskQuery().singleResult()); }
@Test public void testSetLocalScopeWithTaskListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .userTask().id("activityId") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskListener.class) .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetLocalScopeInSubprocessWithTaskListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent() .userTask().id("activityId") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskListener.class) .endEvent() .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testCompleteTaskOnCreateListenerWithFollowingCallActivity() { final BpmnModelInstance subProcess = Bpmn.createExecutableProcess("subProc") .startEvent() .userTask("calledTask") .endEvent() .done(); final BpmnModelInstance instance = Bpmn.createExecutableProcess("mainProc") .startEvent() .userTask("mainTask") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, CreateTaskListener.class.getName()) .callActivity().calledElement("subProc") .endEvent() .done(); testRule.deploy(subProcess); testRule.deploy(instance); engineRule.getRuntimeService().startProcessInstanceByKey("mainProc"); Task task = engineRule.getTaskService().createTaskQuery().singleResult(); Assert.assertEquals(task.getTaskDefinitionKey(), "calledTask"); }
@Test public void testAssignmentTaskListenerWhenSavingTask() { AssignmentTaskListener.reset(); final BpmnModelInstance process = Bpmn.createExecutableProcess("process") .startEvent() .userTask("task") .camundaTaskListenerClass("assignment", AssignmentTaskListener.class) .endEvent() .done(); testRule.deploy(process); engineRule.getRuntimeService().startProcessInstanceByKey("process"); // given Task task = engineRule.getTaskService().createTaskQuery().singleResult(); // when task.setAssignee("gonzo"); engineRule.getTaskService().saveTask(task); // then assertEquals(1, AssignmentTaskListener.eventCounter); }