@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).startBeforeActivity("activityId", "ancestorActivityInstanceId"); inOrder.verify(mockModificationBuilder).startAfterActivity("activityId"); inOrder.verify(mockModificationBuilder).startAfterActivity("activityId", "ancestorActivityInstanceId");
inOrder.verify(mockModificationBuilder).startBeforeActivity("activityId");
inOrder.verify(mockModificationBuilder).cancelActivityInstance("activityInstanceId"); inOrder.verify(mockModificationBuilder).cancelTransitionInstance("transitionInstanceId"); inOrder.verify(mockModificationBuilder).startBeforeActivity("activityId"); inOrder.verify(mockModificationBuilder).startBeforeActivity("activityId", "ancestorActivityInstanceId"); inOrder.verify(mockModificationBuilder).startAfterActivity("activityId"); inOrder.verify(mockModificationBuilder).startAfterActivity("activityId", "ancestorActivityInstanceId");
@Deployment(resources = PARALLEL_MULTI_INSTANCE_SUBPROCESS_COMPLETION_CONDITION_PROCESS) public void testStartInnerActivityParallelSubprocessWithCompletionCondition() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelSubprocessCompletionCondition"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("miSubProcess") .startBeforeActivity("miSubProcess") .execute(); // then the process is able to complete successfully and respects the completion condition completeTasksInOrder("subProcessTask", "subProcessTask", "subProcessTask", "subProcessTask"); assertProcessEnded(processInstance.getId()); }
@Deployment(resources = PARALLEL_MULTI_INSTANCE_TASK_COMPLETION_CONDITION_PROCESS) public void testStartInnerActivityParallelTasksWithCompletionCondition() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelUserTasksCompletionCondition"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("miTasks") .startBeforeActivity("miTasks") .execute(); // then the process is able to complete successfully and respects the completion condition completeTasksInOrder("miTasks", "miTasks", "miTasks", "miTasks"); assertProcessEnded(processInstance.getId()); }
.startBeforeActivity("innerTask") .cancelTransitionInstance(transitionInstances[1].getId()) // does not trigger compaction .cancelTransitionInstance(transitionInstances[1].getId()) // should fail
/** * CAM-3718 */ @Deployment(resources = EXCLUSIVE_GATEWAY_PROCESS) public void testEndProcessInstanceIntermediately() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("exclusiveGateway"); String processInstanceId = processInstance.getId(); ActivityInstance tree = runtimeService.getActivityInstance(processInstanceId); runtimeService.createProcessInstanceModification(processInstance.getId()).cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .startAfterActivity("task1").startBeforeActivity("task1").execute(); ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).activity("task1").done()); ExecutionTree executionTree = ExecutionTree.forExecution(processInstanceId, processEngine); assertThat(executionTree).matches(describeExecutionTree("task1").scope().done()); assertEquals(1, taskService.createTaskQuery().count()); // complete the process completeTasksInOrder("task1"); assertProcessEnded(processInstanceId); }
/** * CAM-3718 */ @Deployment(resources = EXCLUSIVE_GATEWAY_PROCESS) public void testEndProcessInstanceIntermediately() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("exclusiveGateway"); String processInstanceId = processInstance.getId(); ActivityInstance tree = runtimeService.getActivityInstance(processInstanceId); Batch modificationBatch = runtimeService.createProcessInstanceModification(processInstance.getId()) .cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .startAfterActivity("task1") .startBeforeActivity("task1") .executeAsync(); assertNotNull(modificationBatch); executeSeedAndBatchJobs(modificationBatch); ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).activity("task1").done()); ExecutionTree executionTree = ExecutionTree.forExecution(processInstanceId, processEngine); assertThat(executionTree).matches(describeExecutionTree("task1").scope().done()); assertEquals(1, taskService.createTaskQuery().count()); // complete the process completeTasksInOrder("task1"); assertProcessEnded(processInstanceId); }
@Deployment(resources = PARALLEL_MULTI_INSTANCE_TASK_COMPLETION_CONDITION_PROCESS) public void testStartInnerActivityParallelTasksWithCompletionCondition() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelUserTasksCompletionCondition"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("miTasks") .startBeforeActivity("miTasks") .execute(); // then the process is able to complete successfully and respects the completion condition completeTasksInOrder("miTasks", "miTasks", "miTasks", "miTasks"); assertProcessEnded(processInstance.getId()); }
@Deployment(resources = PARALLEL_MULTI_INSTANCE_SUBPROCESS_COMPLETION_CONDITION_PROCESS) public void testStartInnerActivityParallelSubprocessWithCompletionCondition() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("miParallelSubprocessCompletionCondition"); // when runtimeService .createProcessInstanceModification(processInstance.getId()) .startBeforeActivity("miSubProcess") .startBeforeActivity("miSubProcess") .execute(); // then the process is able to complete successfully and respects the completion condition completeTasksInOrder("subProcessTask", "subProcessTask", "subProcessTask", "subProcessTask"); assertProcessEnded(processInstance.getId()); }
.startBeforeActivity("innerTask") .cancelTransitionInstance(transitionInstances[1].getId()) // does not trigger compaction .cancelTransitionInstance(transitionInstances[1].getId()) // should fail
/** * CAM-3718 */ @Deployment(resources = EXCLUSIVE_GATEWAY_PROCESS) public void testEndProcessInstanceIntermediately() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("exclusiveGateway"); String processInstanceId = processInstance.getId(); ActivityInstance tree = runtimeService.getActivityInstance(processInstanceId); runtimeService.createProcessInstanceModification(processInstance.getId()).cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .startAfterActivity("task1").startBeforeActivity("task1").execute(); ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).activity("task1").done()); ExecutionTree executionTree = ExecutionTree.forExecution(processInstanceId, processEngine); assertThat(executionTree).matches(describeExecutionTree("task1").scope().done()); assertEquals(1, taskService.createTaskQuery().count()); // complete the process completeTasksInOrder("task1"); assertProcessEnded(processInstanceId); }
/** * CAM-3718 */ @Deployment(resources = EXCLUSIVE_GATEWAY_PROCESS) public void testEndProcessInstanceIntermediately() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("exclusiveGateway"); String processInstanceId = processInstance.getId(); ActivityInstance tree = runtimeService.getActivityInstance(processInstanceId); Batch modificationBatch = runtimeService.createProcessInstanceModification(processInstance.getId()) .cancelActivityInstance(getInstanceIdForActivity(tree, "task1")) .startAfterActivity("task1") .startBeforeActivity("task1") .executeAsync(); assertNotNull(modificationBatch); executeSeedAndBatchJobs(modificationBatch); ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(processInstance.getProcessDefinitionId()).activity("task1").done()); ExecutionTree executionTree = ExecutionTree.forExecution(processInstanceId, processEngine); assertThat(executionTree).matches(describeExecutionTree("task1").scope().done()); assertEquals(1, taskService.createTaskQuery().count()); // complete the process completeTasksInOrder("task1"); assertProcessEnded(processInstanceId); }