@Test public void testDeleteProcessInstancesAsyncWithSkipCustomListeners() { // given IncrementCounterListener.counter = 0; BpmnModelInstance instance = ProcessModels.newModel(ONE_TASK_PROCESS) .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(); testRule.deploy(instance); List<String> processIds = startTestProcesses(1); // when Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, null, TESTING_INSTANCE_DELETE, true); executeSeedJob(batch); executeBatchJobs(batch); // then assertThat(IncrementCounterListener.counter, is(0)); }
@Test public void testInvokeListenersWhenDeletingProcessInstancesAsync() { // given IncrementCounterListener.counter = 0; BpmnModelInstance instance = ProcessModels.newModel(ONE_TASK_PROCESS) .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(); migrationRule.deploy(instance); List<String> processIds = startTestProcesses(1); // when Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, TESTING_INSTANCE_DELETE); executeSeedJob(batch); executeBatchJobs(batch); // then assertThat(IncrementCounterListener.counter, is(1)); }
private void deployTwoProcessDefinitions() { testHelper.deploy( Bpmn.createExecutableProcess("processOne") .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(), Bpmn.createExecutableProcess("processTwo") .startEvent() .userTask() .endEvent() .done()); }
@Test public void testSetVariableInStartAndEndListener() { //given process with start and end listener on user task BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); //when process is started ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); //then start listener sets variable and //execution stays in task after conditional event in event sub process TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertEquals(TASK_AFTER_CONDITION, task.getName()); tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); } }
.startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, SetVariableDelegate.class.getName()) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, RecorderExecutionListener.class.getName()) .endEvent() .done();
@Test public void testNonInterruptingSetVariableInEndListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .name(TASK_WITH_CONDITION) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); //when task is completed taskService.complete(taskQuery.singleResult().getId()); //then end listener sets variable //non interrupting event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(1 + specifier.getExpectedNonInterruptingCount(), tasksAfterVariableIsSet.size()); assertEquals(specifier.getExpectedNonInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void testNonInterruptingSetVariableInStartListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .name(TASK_WITH_CONDITION) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); //when task is completed taskService.complete(taskQuery.singleResult().getId()); //then start listener sets variable //non interrupting boundary event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(1 + specifier.getExpectedNonInterruptingCount(), tasksAfterVariableIsSet.size()); assertEquals(specifier.getExpectedNonInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void testSetVariableInEndListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); //when task is completed taskService.complete(task.getId()); //then end listener sets variable //conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void testSetVariableInStartListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .userTask(TASK_WITH_CONDITION_ID) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then start listener sets variable //conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
.startEvent() .userTask("userTask1") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, SetVariableExecutionListenerImpl.class.getName()) .userTask("userTask2") .endEvent()
.startEvent() .userTask("userTask1") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, SetVariableExecutionListenerImpl.class.getName()) .userTask("userTask2") .endEvent()
@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) }
@Test public void shouldRestartProcessInstanceWithVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process") .startEvent() .userTask("userTask1") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, SetVariableExecutionListenerImpl.class.getName()) .userTask("userTask2") .endEvent() .done(); ProcessDefinition processDefinition = testRule.deployAndGetDefinition(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); // variable is set at the beginning runtimeService.setVariable(processInstance.getId(), "var", "bar"); // variable is changed Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).active().singleResult(); taskService.complete(task.getId()); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask1") .processInstanceIds(processInstance.getId()) .execute(); // then ProcessInstance restartedProcessInstance = runtimeService.createProcessInstanceQuery().active().singleResult(); VariableInstance variableInstance = runtimeService.createVariableInstanceQuery().processInstanceIdIn(restartedProcessInstance.getId()).singleResult(); assertEquals(variableInstance.getExecutionId(), restartedProcessInstance.getId()); assertEquals("var", variableInstance.getName()); assertEquals("foo", variableInstance.getValue()); }
.startEvent("startEvent") .userTask("userTask1") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, SetVariableExecutionListenerImpl.class.getName()) .userTask("userTask2") .endEvent()
@Test public void testDeleteProcessInstancesAsyncWithSkipCustomListeners() { // given IncrementCounterListener.counter = 0; BpmnModelInstance instance = ProcessModels.newModel(ONE_TASK_PROCESS) .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(); testRule.deploy(instance); List<String> processIds = startTestProcesses(1); // when Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, null, TESTING_INSTANCE_DELETE, true); executeSeedJob(batch); executeBatchJobs(batch); // then assertThat(IncrementCounterListener.counter, is(0)); }
private void deployTwoProcessDefinitions() { testHelper.deploy( Bpmn.createExecutableProcess("processOne") .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(), Bpmn.createExecutableProcess("processTwo") .startEvent() .userTask() .endEvent() .done()); }
@Test public void testInvokeListenersWhenDeletingProcessInstancesAsync() { // given IncrementCounterListener.counter = 0; BpmnModelInstance instance = ProcessModels.newModel(ONE_TASK_PROCESS) .startEvent() .userTask() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, IncrementCounterListener.class.getName()) .endEvent() .done(); migrationRule.deploy(instance); List<String> processIds = startTestProcesses(1); // when Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, TESTING_INSTANCE_DELETE); executeSeedJob(batch); executeBatchJobs(batch); // then assertThat(IncrementCounterListener.counter, is(1)); }
@Test public void testSetVariableInStartAndEndListener() { //given process with start and end listener on user task BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, specifier.getDelegateClass().getName()) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); //when process is started ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); //then start listener sets variable and //execution stays in task after conditional event in event sub process TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertEquals(TASK_AFTER_CONDITION, task.getName()); tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); } }
@Test public void testNonInterruptingSetVariableInEndListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .name(TASK_WITH_CONDITION) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); //when task is completed taskService.complete(taskQuery.singleResult().getId()); //then end listener sets variable //non interrupting event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(1 + specifier.getExpectedNonInterruptingCount(), tasksAfterVariableIsSet.size()); assertEquals(specifier.getExpectedNonInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }
@Test public void testSetVariableInEndListener() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, specifier.getDelegateClass().getName()) .userTask(TASK_WITH_CONDITION_ID) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, specifier.getCondition(), true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); //when task is completed taskService.complete(task.getId()); //then end listener sets variable //conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(specifier.getExpectedInterruptingCount(), taskQuery.taskName(TASK_AFTER_CONDITION).count()); }