@Before public void setUpRuntimeData() { runtimeServiceMock = mock(RuntimeService.class); when(processEngine.getRuntimeService()).thenReturn(runtimeServiceMock); modificationBuilderMock = mock(ModificationBuilder.class); when(modificationBuilderMock.cancelAllForActivity(anyString())).thenReturn(modificationBuilderMock); when(modificationBuilderMock.startAfterActivity(anyString())).thenReturn(modificationBuilderMock); when(modificationBuilderMock.startBeforeActivity(anyString())).thenReturn(modificationBuilderMock); when(modificationBuilderMock.startTransition(anyString())).thenReturn(modificationBuilderMock); when(modificationBuilderMock.processInstanceIds(anyListOf(String.class))).thenReturn(modificationBuilderMock); Batch batchMock = createMockBatch(); when(modificationBuilderMock.executeAsync()).thenReturn(batchMock); when(runtimeServiceMock.createModification(anyString())).thenReturn(modificationBuilderMock); }
verify(modificationBuilderMock).startBeforeActivity("activityId"); verify(modificationBuilderMock).startAfterActivity("activityId"); verify(modificationBuilderMock).startTransition("transitionId"); verify(modificationBuilderMock).skipCustomListeners(); verify(modificationBuilderMock).skipIoMappings();
public Batch startTransitionAsync(String key, int numberOfProcessInstances, String transitionId, String processDefinitionId) { RuntimeService runtimeService = engineRule.getRuntimeService(); List<String> processInstanceIds = startInstances(key, numberOfProcessInstances); return runtimeService.createModification(processDefinitionId).startTransition(transitionId).processInstanceIds(processInstanceIds).executeAsync(); }
@Test public void executeModificationAsync() { Map<String, Object> json = new HashMap<String, Object>(); List<Map<String, Object>> instructions = new ArrayList<Map<String, Object>>(); instructions.add(ModificationInstructionBuilder.startTransition().transitionId("transitionId").getJson()); instructions.add(ModificationInstructionBuilder.startBefore().activityId("activityId").getJson()); instructions.add(ModificationInstructionBuilder.startAfter().activityId("activityId").getJson()); instructions.add(ModificationInstructionBuilder.cancellation().activityId("activityId").getJson()); json.put("processDefinitionId", "processDefinitionId"); json.put("instructions", instructions); json.put("processInstanceIds", Arrays.asList("100", "20")); given() .contentType(POST_JSON_CONTENT_TYPE) .body(json) .then() .expect() .statusCode(Status.OK.getStatusCode()) .when() .post(EXECUTE_MODIFICATION_ASYNC_URL); verify(runtimeServiceMock).createModification("processDefinitionId"); verify(modificationBuilderMock).processInstanceIds(eq(Arrays.asList("100", "20"))); verify(modificationBuilderMock).cancelAllForActivity("activityId"); verify(modificationBuilderMock).startBeforeActivity("activityId"); verify(modificationBuilderMock).startAfterActivity("activityId"); verify(modificationBuilderMock).startTransition("transitionId"); verify(modificationBuilderMock).executeAsync(); }
verify(modificationBuilderMock).startBeforeActivity("activityId"); verify(modificationBuilderMock).startAfterActivity("activityId"); verify(modificationBuilderMock).startTransition("transitionId"); verify(modificationBuilderMock).skipCustomListeners(); verify(modificationBuilderMock).skipIoMappings();
verify(modificationBuilderMock).startBeforeActivity("activityId"); verify(modificationBuilderMock).startAfterActivity("activityId"); verify(modificationBuilderMock).startTransition("transitionId"); verify(modificationBuilderMock).skipCustomListeners(); verify(modificationBuilderMock).skipIoMappings();
public void execute(ProcessEngine engine, String scenarioName) { String processDefinitionId = engine.getRepositoryService().createProcessDefinitionQuery() .processDefinitionKey("oneTaskProcessModification_710") .singleResult() .getId(); List<String> processInstanceIds = new ArrayList<>(); for (int i = 0; i < 10; i++) { String processInstanceId = engine.getRuntimeService() .startProcessInstanceById(processDefinitionId, "ModificationBatchScenario").getId(); processInstanceIds.add(processInstanceId); } engine.getRuntimeService().createModification(processDefinitionId) .startAfterActivity("theStart") .startBeforeActivity("theTask") .startBeforeActivity("userTask4") .startTransition("flow2") .cancelAllForActivity("userTask4", false) .processInstanceIds(processInstanceIds) .skipCustomListeners() .skipIoMappings() .executeAsync(); } };
@Test public void testBatchCreationWithOverlappingProcessInstanceIdsAndQuery() { int processInstanceCount = 15; DeploymentWithDefinitions deployment = testRule.deploy(instance); ProcessDefinition processDefinition = deployment.getDeployedProcessDefinitions().get(0); List<String> processInstanceIds = helper.startInstances("process1", 15); ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()); assertEquals(processInstanceCount, processInstanceQuery.count()); // when Batch batch = runtimeService .createModification(processDefinition.getId()) .startTransition("seq") .processInstanceIds(processInstanceIds) .processInstanceQuery(processInstanceQuery) .executeAsync(); // then a batch is created assertBatchCreated(batch, processInstanceCount); }
@Test public void testStartTransition() { DeploymentWithDefinitions deployment = testRule.deploy(instance); ProcessDefinition definition = deployment.getDeployedProcessDefinitions().get(0); List<String> processInstanceIds = helper.startInstances("process1", 2); runtimeService.createModification(definition.getId()).startTransition("seq").processInstanceIds(processInstanceIds).execute(); for (String processInstanceId : processInstanceIds) { ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertNotNull(updatedTree); assertEquals(processInstanceId, updatedTree.getProcessInstanceId()); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(definition.getId()).activity("user1").activity("user2").done()); } }
.startTransition("seq") .cancelAllForActivity("user1") .processInstanceIds(instances)
public Batch startTransitionAsync(String key, int numberOfProcessInstances, String transitionId, String processDefinitionId) { RuntimeService runtimeService = engineRule.getRuntimeService(); List<String> processInstanceIds = startInstances(key, numberOfProcessInstances); return runtimeService.createModification(processDefinitionId).startTransition(transitionId).processInstanceIds(processInstanceIds).executeAsync(); }
@Test public void testBatchCreationWithOverlappingProcessInstanceIdsAndQuery() { int processInstanceCount = 15; DeploymentWithDefinitions deployment = testRule.deploy(instance); ProcessDefinition processDefinition = deployment.getDeployedProcessDefinitions().get(0); List<String> processInstanceIds = helper.startInstances("process1", 15); ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()); assertEquals(processInstanceCount, processInstanceQuery.count()); // when Batch batch = runtimeService .createModification(processDefinition.getId()) .startTransition("seq") .processInstanceIds(processInstanceIds) .processInstanceQuery(processInstanceQuery) .executeAsync(); // then a batch is created assertBatchCreated(batch, processInstanceCount); }
@Test public void testStartTransition() { DeploymentWithDefinitions deployment = testRule.deploy(instance); ProcessDefinition definition = deployment.getDeployedProcessDefinitions().get(0); List<String> processInstanceIds = helper.startInstances("process1", 2); runtimeService.createModification(definition.getId()).startTransition("seq").processInstanceIds(processInstanceIds).execute(); for (String processInstanceId : processInstanceIds) { ActivityInstance updatedTree = runtimeService.getActivityInstance(processInstanceId); assertNotNull(updatedTree); assertEquals(processInstanceId, updatedTree.getProcessInstanceId()); assertThat(updatedTree).hasStructure(describeActivityInstanceTree(definition.getId()).activity("user1").activity("user2").done()); } }
.startTransition("seq") .cancelAllForActivity("user1") .processInstanceIds(instances)