private void verifyStringParameterQueryInvocations() { Map<String, String> stringQueryParameters = getCompleteStringQueryParameters(); verify(mockedQuery).activityInstanceId(stringQueryParameters.get("activityInstanceId")); verify(mockedQuery).processInstanceId(stringQueryParameters.get("processInstanceId")); verify(mockedQuery).processDefinitionId(stringQueryParameters.get("processDefinitionId")); verify(mockedQuery).executionId(stringQueryParameters.get("executionId")); verify(mockedQuery).activityId(stringQueryParameters.get("activityId")); verify(mockedQuery).activityName(stringQueryParameters.get("activityName")); verify(mockedQuery).activityType(stringQueryParameters.get("activityType")); verify(mockedQuery).taskAssignee(stringQueryParameters.get("taskAssignee")); verify(mockedQuery).list(); }
protected void logActivityResults(PerfTestPass pass, PerfTestRun run, HistoryService historyService) { String processInstanceId = run.getVariable(PerfTestConstants.PROCESS_INSTANCE_ID); List<ActivityPerfTestResult> activityResults = new ArrayList<ActivityPerfTestResult>(); HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); Date startTime = processInstance.getStartTime(); List<HistoricActivityInstance> activityInstances = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .orderByHistoricActivityInstanceStartTime() .asc() .list(); for (HistoricActivityInstance activityInstance : activityInstances) { if (watchAllActivities || activityIds.contains(activityInstance.getActivityId())) { ActivityPerfTestResult result = new ActivityPerfTestResult(activityInstance); if (activityInstance.getActivityType().equals("startEvent")) { result.setStartTime(startTime); } activityResults.add(result); } } pass.logActivityResult(processInstanceId, activityResults); }
protected HistoricActivityInstance resolveStartActivityInstance(HistoricProcessInstance processInstance) { HistoryService historyService = Context.getProcessEngineConfiguration().getHistoryService(); String processInstanceId = processInstance.getId(); String startActivityId = processInstance.getStartActivityId(); ensureNotNull("startActivityId", startActivityId); List<HistoricActivityInstance> historicActivityInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityId(startActivityId) .orderPartiallyByOccurrence() .asc() .list(); ensureNotEmpty("historicActivityInstances", historicActivityInstances); HistoricActivityInstance startActivityInstance = historicActivityInstances.get(0); return startActivityInstance; }
protected HistoricActivityInstance resolveStartActivityInstance(HistoricProcessInstance processInstance) { HistoryService historyService = Context.getProcessEngineConfiguration().getHistoryService(); String processInstanceId = processInstance.getId(); String startActivityId = processInstance.getStartActivityId(); ensureNotNull("startActivityId", startActivityId); List<HistoricActivityInstance> historicActivityInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityId(startActivityId) .orderPartiallyByOccurrence() .asc() .list(); ensureNotEmpty("historicActivityInstances", historicActivityInstances); HistoricActivityInstance startActivityInstance = historicActivityInstances.get(0); return startActivityInstance; }
@Deployment public void testEndParallelJoin() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); List<HistoricActivityInstance> activityInstance = historyService .createHistoricActivityInstanceQuery() .processInstanceId(pi.getId()) .activityId("parallelJoinEnd") .list(); assertThat(activityInstance.size(), is(2)); assertThat(pi.isEnded(), is(true)); }
query.processInstanceId(processInstanceId);
@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(resources={"org/camunda/bpm/engine/test/history/HistoricTaskInstanceTest.testHistoricTaskInstance.bpmn20.xml"}) public void testHistoricTaskInstanceQueryByActivityInstanceIds() throws Exception { ProcessInstance pi1 = runtimeService.startProcessInstanceByKey("HistoricTaskInstanceTest"); ProcessInstance pi2 = runtimeService.startProcessInstanceByKey("HistoricTaskInstanceTest"); String activityInstanceId1 = historyService.createHistoricActivityInstanceQuery() .processInstanceId(pi1.getId()) .activityId("task") .singleResult() .getId(); String activityInstanceId2 = historyService.createHistoricActivityInstanceQuery() .processInstanceId(pi2.getId()) .activityId("task") .singleResult() .getId(); HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery() .activityInstanceIdIn(activityInstanceId1, activityInstanceId2); assertEquals(2, query.count()); assertEquals(2, query.list().size()); }
@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()); } }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/oneTaskProcess.bpmn20.xml"}) public void testProcessDefinitionKeyProperty() { // given String key = "oneTaskProcess"; String processInstanceId = runtimeService.startProcessInstanceByKey(key).getId(); // when HistoricActivityInstance activityInstance = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityId("theTask") .singleResult(); // then assertNotNull(activityInstance.getProcessDefinitionKey()); assertEquals(key, activityInstance.getProcessDefinitionKey()); }
@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()); }
.processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId()
assertEquals(0, historyService.createHistoricActivityInstanceQuery().processInstanceId("nonExistingProcessInstanceId").list().size()); assertEquals(3, historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstance.getId()).list().size()); } else { assertEquals(0, historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstance.getId()).list().size());
@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()); }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_FULL) public void testHistoricProcInstQueryWithExecutedActivityIds() { // given deployment(ProcessModels.TWO_TASKS_PROCESS); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); Task task = taskService.createTaskQuery().active().singleResult(); taskService.complete(task.getId()); // assume HistoricActivityInstance historicActivityInstance = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .activityId("userTask1") .singleResult(); assertNotNull(historicActivityInstance); // when List<HistoricProcessInstance> result = historyService .createHistoricProcessInstanceQuery() .executedActivityIdIn(historicActivityInstance.getActivityId()) .list(); // then assertNotNull(result); assertEquals(1, result.size()); assertEquals(result.get(0).getId(), processInstance.getId()); }
assertEquals(3, historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstance.getId()).count()); assertEquals(4, historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).count()); assertEquals(4, historyService.createHistoricDetailQuery().processInstanceId(processInstance.getId()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstance.getId()).count()); assertEquals(0, historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).count()); assertEquals(0, historyService.createHistoricDetailQuery().processInstanceId(processInstance.getId()).count());
inOrder.verify(mockedQuery).processInstanceId(processInstanceId); inOrder.verify(mockedQuery).list();
/** CAM-9220 (https://app.camunda.com/jira/browse/CAM-9220) */ @Deployment @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_FULL) public void testThrowEscalationEventFromEventSubprocess() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("embeddedEventSubprocess"); Job job = managementService.createJobQuery().singleResult(); managementService.executeJob(job.getId()); assertEquals(0, taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .taskName("task in subprocess").count()); assertEquals(1, taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .taskName("task in process").count()); // second timer job shouldn't be available job = managementService.createJobQuery().singleResult(); assertNull(job); // there should only be one completed Escalation Catch Boundary Event assertEquals(1, historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .activityId("EscalationCatchBoundaryEvent") .finished() .count()); }