@SuppressWarnings("unchecked") protected ProcessInstanceModificationInstantiationBuilder setUpMockModificationBuilder() { ProcessInstanceModificationInstantiationBuilder mockModificationBuilder = mock(ProcessInstanceModificationInstantiationBuilder.class); when(mockModificationBuilder.cancelActivityInstance(anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.cancelAllForActivity(anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startAfterActivity(anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startAfterActivity(anyString(), anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startBeforeActivity(anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startBeforeActivity(anyString(), anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startTransition(anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.startTransition(anyString(), anyString())).thenReturn(mockModificationBuilder); when(mockModificationBuilder.setVariables(any(Map.class))).thenReturn(mockModificationBuilder); when(mockModificationBuilder.setVariablesLocal(any(Map.class))).thenReturn(mockModificationBuilder); return mockModificationBuilder; }
inOrder.verify(mockModificationBuilder).cancelActivityInstance("activityInstanceId"); inOrder.verify(mockModificationBuilder).cancelTransitionInstance("transitionInstanceId"); inOrder.verify(mockModificationBuilder).startBeforeActivity("activityId");
inOrder.verify(mockModificationBuilder).cancelActivityInstance("activityInstanceId"); inOrder.verify(mockModificationBuilder).cancelTransitionInstance("transitionInstanceId"); inOrder.verify(mockModificationBuilder).startBeforeActivity("activityId");
@Deployment(resources = { CALL_ACTIVITY_PARENT_PROCESS, CALL_ACTIVITY_CHILD_PROCESS }) public void FAILING_testCancelCallActivityInstance() { // given ProcessInstance parentprocess = runtimeService.startProcessInstanceByKey("parentprocess"); ProcessInstance subProcess = runtimeService.createProcessInstanceQuery().processDefinitionKey("subprocess").singleResult(); ActivityInstance subProcessActivityInst = runtimeService.getActivityInstance(subProcess.getId()); // when runtimeService.createProcessInstanceModification(subProcess.getId()).startBeforeActivity("childEnd", subProcess.getId()) .cancelActivityInstance(getInstanceIdForActivity(subProcessActivityInst, "innerTask")).execute(); // then assertProcessEnded(parentprocess.getId()); }
@Deployment(resources = { CALL_ACTIVITY_PARENT_PROCESS, CALL_ACTIVITY_CHILD_PROCESS }) public void testCancelCallActivityInstance() { // given ProcessInstance parentprocess = runtimeService.startProcessInstanceByKey("parentprocess"); ProcessInstance subProcess = runtimeService.createProcessInstanceQuery().processDefinitionKey("subprocess").singleResult(); ActivityInstance subProcessActivityInst = runtimeService.getActivityInstance(subProcess.getId()); // when Batch modificationBatch = runtimeService.createProcessInstanceModification(subProcess.getId()) .startBeforeActivity("childEnd", subProcess.getId()) .cancelActivityInstance(getInstanceIdForActivity(subProcessActivityInst, "innerTask")) .executeAsync(); assertNotNull(modificationBatch); executeSeedAndBatchJobs(modificationBatch); // then assertProcessEnded(parentprocess.getId()); }
@Deployment(resources = TRANSACTION_WITH_COMPENSATION_PROCESS) public void testStartActivityAndCancelCompensatingTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testProcess"); completeTasksInOrder("userTask"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); runtimeService.createProcessInstanceModification(processInstance.getId()).startBeforeActivity("userTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "undoTask")).execute(); tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).beginScope("tx").activity("userTask").done()); completeTasksInOrder("userTask", "undoTask", "afterCancel"); assertProcessEnded(processInstance.getId()); }
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("task1") .cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("task1") .cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .execute();
@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()); }
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("theTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "theTask")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("theTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "theTask")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("innerTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "innerTask")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("innerTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "innerTask")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("innerTask1") .cancelActivityInstance(getInstanceIdForActivity(tree, "innerTask1")) .execute();
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("innerTask1") .cancelActivityInstance(getInstanceIdForActivity(tree, "innerTask1")) .execute();
@Deployment(resources = { CALL_ACTIVITY_PARENT_PROCESS, CALL_ACTIVITY_CHILD_PROCESS }) public void FAILING_testCancelCallActivityInstance() { // given ProcessInstance parentprocess = runtimeService.startProcessInstanceByKey("parentprocess"); ProcessInstance subProcess = runtimeService.createProcessInstanceQuery().processDefinitionKey("subprocess").singleResult(); ActivityInstance subProcessActivityInst = runtimeService.getActivityInstance(subProcess.getId()); // when runtimeService.createProcessInstanceModification(subProcess.getId()).startBeforeActivity("childEnd", subProcess.getId()) .cancelActivityInstance(getInstanceIdForActivity(subProcessActivityInst, "innerTask")).execute(); // then assertProcessEnded(parentprocess.getId()); }
@Deployment(resources = { CALL_ACTIVITY_PARENT_PROCESS, CALL_ACTIVITY_CHILD_PROCESS }) public void testCancelCallActivityInstance() { // given ProcessInstance parentprocess = runtimeService.startProcessInstanceByKey("parentprocess"); ProcessInstance subProcess = runtimeService.createProcessInstanceQuery().processDefinitionKey("subprocess").singleResult(); ActivityInstance subProcessActivityInst = runtimeService.getActivityInstance(subProcess.getId()); // when Batch modificationBatch = runtimeService.createProcessInstanceModification(subProcess.getId()) .startBeforeActivity("childEnd", subProcess.getId()) .cancelActivityInstance(getInstanceIdForActivity(subProcessActivityInst, "innerTask")) .executeAsync(); assertNotNull(modificationBatch); executeSeedAndBatchJobs(modificationBatch); // then assertProcessEnded(parentprocess.getId()); }
@Deployment(resources = TRANSACTION_WITH_COMPENSATION_PROCESS) public void testStartActivityAndCancelCompensatingTask() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testProcess"); completeTasksInOrder("userTask"); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); runtimeService.createProcessInstanceModification(processInstance.getId()).startBeforeActivity("userTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "undoTask")).execute(); tree = runtimeService.getActivityInstance(processInstance.getId()); assertThat(tree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).beginScope("tx").activity("userTask").done()); completeTasksInOrder("userTask", "undoTask", "afterCancel"); assertProcessEnded(processInstance.getId()); }
@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()); }
.createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("theTask") .cancelActivityInstance(getInstanceIdForActivity(tree, "theTask")) .execute();