@Override protected void applySortBy(HistoricActivityInstanceQuery query, String sortBy, Map<String, Object> parameters, ProcessEngine engine) { if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_ID_VALUE)) { query.orderByHistoricActivityInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_INSTANCE_ID_VALUE)) { query.orderByProcessInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_DEFINITION_ID_VALUE)) { query.orderByProcessDefinitionId(); } else if (sortBy.equals(SORT_BY_EXECUTION_ID_VALUE)) { query.orderByExecutionId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_ID_VALUE)) { query.orderByActivityId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_NAME_VALUE)) { query.orderByActivityName(); } else if (sortBy.equals(SORT_BY_ACTIVITY_TYPE_VALUE)) { query.orderByActivityType(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_START_TIME_VALUE)) { query.orderByHistoricActivityInstanceStartTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_END_TIME_VALUE)) { query.orderByHistoricActivityInstanceEndTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_DURATION_VALUE)) { query.orderByHistoricActivityInstanceDuration(); } else if (sortBy.equals(SORT_PARTIALLY_BY_OCCURRENCE)) { query.orderPartiallyByOccurrence(); } else if (sortBy.equals(SORT_BY_TENANT_ID)) { query.orderByTenantId(); } }
@Override protected void applySortBy(HistoricActivityInstanceQuery query, String sortBy, Map<String, Object> parameters, ProcessEngine engine) { if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_ID_VALUE)) { query.orderByHistoricActivityInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_INSTANCE_ID_VALUE)) { query.orderByProcessInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_DEFINITION_ID_VALUE)) { query.orderByProcessDefinitionId(); } else if (sortBy.equals(SORT_BY_EXECUTION_ID_VALUE)) { query.orderByExecutionId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_ID_VALUE)) { query.orderByActivityId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_NAME_VALUE)) { query.orderByActivityName(); } else if (sortBy.equals(SORT_BY_ACTIVITY_TYPE_VALUE)) { query.orderByActivityType(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_START_TIME_VALUE)) { query.orderByHistoricActivityInstanceStartTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_END_TIME_VALUE)) { query.orderByHistoricActivityInstanceEndTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_DURATION_VALUE)) { query.orderByHistoricActivityInstanceDuration(); } else if (sortBy.equals(SORT_PARTIALLY_BY_OCCURRENCE)) { query.orderPartiallyByOccurrence(); } else if (sortBy.equals(SORT_BY_TENANT_ID)) { query.orderByTenantId(); } }
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testSequentialScriptTasks.bpmn20.xml"}) public void testSequentialScriptTasksHistory() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("sum", 0); vars.put("nrOfLoops", 7); runtimeService.startProcessInstanceByKey("miSequentialScriptTask", vars); // Validate history if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicInstances = historyService.createHistoricActivityInstanceQuery().activityType("scriptTask").orderByActivityId().asc().list(); assertEquals(7, historicInstances.size()); for (int i=0; i<7; i++) { HistoricActivityInstance hai = historicInstances.get(i); assertEquals("scriptTask", hai.getActivityType()); assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); } } }
inOrder.verify(mockedQuery).orderByActivityId(); inOrder.verify(mockedQuery).asc(); inOrder.verify(mockedQuery).orderByActivityId(); inOrder.verify(mockedQuery).desc();
@Deployment public void testEventLinkMultipleSources() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("linkEventValid"); List<String> activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that the link event was triggered and that we are assertEquals(Arrays.asList(new String []{"WaitAfterLink", "WaitAfterLink"}), activeActivities); runtimeService.deleteProcessInstance(pi.getId(), "test done"); // validate history if(processEngineConfiguration.getHistoryLevel().getId() >= ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(pi.getId()).orderByActivityId().asc().list(); assertEquals(5, activities.size()); assertEquals("ManualTask_1", activities.get(0).getActivityId()); assertEquals("ParallelGateway_1", activities.get(1).getActivityId()); assertEquals("StartEvent_1", activities.get(2).getActivityId()); assertEquals("WaitAfterLink", activities.get(3).getActivityId()); assertEquals("WaitAfterLink", activities.get(4).getActivityId()); } }
@Deployment(resources="org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelUserTasksBasedOnCollection.bpmn20.xml") public void testEmptyCollectionInMI() { List<String> assigneeList = new ArrayList<String>(); String procId = runtimeService.startProcessInstanceByKey("miParallelUserTasksBasedOnCollection", CollectionUtil.singletonMap("assigneeList", assigneeList)).getId(); assertEquals(0, taskService.createTaskQuery().count()); assertProcessEnded(procId); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> activities = historyService .createHistoricActivityInstanceQuery() .processInstanceId(procId) .orderByActivityId() .asc().list(); assertEquals(3, activities.size()); assertEquals("miTasks#multiInstanceBody", activities.get(0).getActivityId()); assertEquals("theEnd", activities.get(1).getActivityId()); assertEquals("theStart", activities.get(2).getActivityId()); } }
@Deployment public void testValidEventLink() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("linkEventValid"); List<String> activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that now the first receive task is active assertEquals(Arrays.asList(new String []{"waitAfterLink1"}), activeActivities); runtimeService.signal(pi.getId()); activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that now the second receive task is active assertEquals(Arrays.asList(new String []{"waitAfterLink2"}), activeActivities); runtimeService.signal(pi.getId()); assertProcessEnded(pi.getId()); // validate history if(processEngineConfiguration.getHistoryLevel().getId() >= ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(pi.getId()).orderByActivityId().asc().list(); assertEquals(4, activities.size()); assertEquals("EndEvent_1", activities.get(0).getActivityId()); assertEquals("StartEvent_1", activities.get(1).getActivityId()); assertEquals("waitAfterLink1", activities.get(2).getActivityId()); assertEquals("waitAfterLink2", activities.get(3).getActivityId()); } }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testMigrateHistoricSubProcessInstance() { //given ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(processDefinition.getId(), processDefinition.getId()) .mapEqualActivities() .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(2, historicInstances.size()); assertMigratedTo(historicInstances.get(0), processDefinition, "subProcess"); assertMigratedTo(historicInstances.get(1), processDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId()); }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testMigrateHistoricActivityInstanceAddScope() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(2, historicInstances.size()); assertMigratedTo(historicInstances.get(0), targetDefinition, "subProcess"); assertMigratedTo(historicInstances.get(1), targetDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId()); }
.orderByActivityId().asc().list(); assertEquals(5, historicActivityInstance.size());
.processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list();
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testHistoricActivityInstanceBecomeScope() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapEqualActivities() .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(1, historicInstances.size()); assertMigratedTo(historicInstances.get(0), targetDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); }
@Override protected void applySortBy(HistoricActivityInstanceQuery query, String sortBy, Map<String, Object> parameters, ProcessEngine engine) { if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_ID_VALUE)) { query.orderByHistoricActivityInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_INSTANCE_ID_VALUE)) { query.orderByProcessInstanceId(); } else if (sortBy.equals(SORT_BY_PROCESS_DEFINITION_ID_VALUE)) { query.orderByProcessDefinitionId(); } else if (sortBy.equals(SORT_BY_EXECUTION_ID_VALUE)) { query.orderByExecutionId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_ID_VALUE)) { query.orderByActivityId(); } else if (sortBy.equals(SORT_BY_ACTIVITY_NAME_VALUE)) { query.orderByActivityName(); } else if (sortBy.equals(SORT_BY_ACTIVITY_TYPE_VALUE)) { query.orderByActivityType(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_START_TIME_VALUE)) { query.orderByHistoricActivityInstanceStartTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_END_TIME_VALUE)) { query.orderByHistoricActivityInstanceEndTime(); } else if (sortBy.equals(SORT_BY_HISTORIC_ACTIVITY_INSTANCE_DURATION_VALUE)) { query.orderByHistoricActivityInstanceDuration(); } else if (sortBy.equals(SORT_PARTIALLY_BY_OCCURRENCE)) { query.orderPartiallyByOccurrence(); } else if (sortBy.equals(SORT_BY_TENANT_ID)) { query.orderByTenantId(); } }
.orderPartiallyByOccurrence() .asc() .orderByActivityId() .asc(); verifyOrder(query, "theStart", "theService", "fork", "theService1", "theService2", "join", "theService3", "join", "theService4", "theEnd");
.orderPartiallyByOccurrence() .asc() .orderByActivityId() .asc();
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testSequentialScriptTasks.bpmn20.xml"}) public void testSequentialScriptTasksHistory() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("sum", 0); vars.put("nrOfLoops", 7); runtimeService.startProcessInstanceByKey("miSequentialScriptTask", vars); // Validate history if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicInstances = historyService.createHistoricActivityInstanceQuery().activityType("scriptTask").orderByActivityId().asc().list(); assertEquals(7, historicInstances.size()); for (int i=0; i<7; i++) { HistoricActivityInstance hai = historicInstances.get(i); assertEquals("scriptTask", hai.getActivityType()); assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); } } }
@Deployment public void testEventLinkMultipleSources() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("linkEventValid"); List<String> activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that the link event was triggered and that we are assertEquals(Arrays.asList(new String []{"WaitAfterLink", "WaitAfterLink"}), activeActivities); runtimeService.deleteProcessInstance(pi.getId(), "test done"); // validate history if(processEngineConfiguration.getHistoryLevel().getId() >= ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(pi.getId()).orderByActivityId().asc().list(); assertEquals(5, activities.size()); assertEquals("ManualTask_1", activities.get(0).getActivityId()); assertEquals("ParallelGateway_1", activities.get(1).getActivityId()); assertEquals("StartEvent_1", activities.get(2).getActivityId()); assertEquals("WaitAfterLink", activities.get(3).getActivityId()); assertEquals("WaitAfterLink", activities.get(4).getActivityId()); } }
@Deployment(resources="org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelUserTasksBasedOnCollection.bpmn20.xml") public void testEmptyCollectionInMI() { List<String> assigneeList = new ArrayList<String>(); String procId = runtimeService.startProcessInstanceByKey("miParallelUserTasksBasedOnCollection", CollectionUtil.singletonMap("assigneeList", assigneeList)).getId(); assertEquals(0, taskService.createTaskQuery().count()); assertProcessEnded(procId); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> activities = historyService .createHistoricActivityInstanceQuery() .processInstanceId(procId) .orderByActivityId() .asc().list(); assertEquals(3, activities.size()); assertEquals("miTasks#multiInstanceBody", activities.get(0).getActivityId()); assertEquals("theEnd", activities.get(1).getActivityId()); assertEquals("theStart", activities.get(2).getActivityId()); } }
@Deployment public void testValidEventLink() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("linkEventValid"); List<String> activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that now the first receive task is active assertEquals(Arrays.asList(new String []{"waitAfterLink1"}), activeActivities); runtimeService.signal(pi.getId()); activeActivities = runtimeService.getActiveActivityIds(pi.getId()); // assert that now the second receive task is active assertEquals(Arrays.asList(new String []{"waitAfterLink2"}), activeActivities); runtimeService.signal(pi.getId()); assertProcessEnded(pi.getId()); // validate history if(processEngineConfiguration.getHistoryLevel().getId() >= ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(pi.getId()).orderByActivityId().asc().list(); assertEquals(4, activities.size()); assertEquals("EndEvent_1", activities.get(0).getActivityId()); assertEquals("StartEvent_1", activities.get(1).getActivityId()); assertEquals("waitAfterLink1", activities.get(2).getActivityId()); assertEquals("waitAfterLink2", activities.get(3).getActivityId()); } }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testMigrateHistoricActivityInstanceAddScope() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(2, historicInstances.size()); assertMigratedTo(historicInstances.get(0), targetDefinition, "subProcess"); assertMigratedTo(historicInstances.get(1), targetDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId()); }