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(); }
@Override protected void applyFilters(HistoricActivityInstanceQuery query) { if (activityInstanceId != null) { query.activityInstanceId(activityInstanceId); query.processInstanceId(processInstanceId); query.processDefinitionId(processDefinitionId); query.executionId(executionId); query.activityId(activityId); query.activityName(activityName); query.activityType(activityType); query.taskAssignee(taskAssignee); query.finished(); query.unfinished(); query.completeScope(); query.canceled(); query.startedBefore(startedBefore); query.startedAfter(startedAfter);
@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(); } }
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(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/standalone/entity/ExecutionSequenceCounterTest.testForkSameSequenceLengthWithoutWaitStates.bpmn20.xml"}) public void testFork() { // given String processInstanceId = runtimeService.startProcessInstanceByKey("process").getId(); HistoricActivityInstanceQuery query = historyService .createHistoricActivityInstanceQuery() .orderPartiallyByOccurrence() .asc(); // when // then query.executionId(processInstanceId); verifyOrder(query, "theStart", "theService", "fork", "theService2", "theEnd2"); String firstExecutionId = historyService.createHistoricActivityInstanceQuery().activityId("theService1").singleResult().getExecutionId(); query.executionId(firstExecutionId); verifyOrder(query, "theService1", "theEnd1"); query = historyService .createHistoricActivityInstanceQuery() .orderPartiallyByOccurrence() .asc(); verifyOrder(query, "theStart", "theService", "fork", "theService1", "theEnd1", "theService2", "theEnd2"); }
@Deployment(resources = {"org/camunda/bpm/engine/test/standalone/entity/ExecutionSequenceCounterTest.testSequentialMultiInstance.bpmn20.xml"}) public void testSequentialMultiInstance() { // given HistoricActivityInstanceQuery query = historyService .createHistoricActivityInstanceQuery() .orderPartiallyByOccurrence() .asc(); // when String processInstanceId = runtimeService.startProcessInstanceByKey("process").getId(); // then query.executionId(processInstanceId); verifyOrder(query, "theStart", "theService1", "theService3", "theEnd"); String taskExecutionId = historyService .createHistoricActivityInstanceQuery() .activityId("theService2") .list() .get(0) .getExecutionId(); query.executionId(taskExecutionId); verifyOrder(query, "theService2#multiInstanceBody", "theService2", "theService2"); query = historyService .createHistoricActivityInstanceQuery() .orderPartiallyByOccurrence() .asc(); verifyOrder(query, "theStart", "theService1", "theService2#multiInstanceBody", "theService2", "theService2", "theService3", "theEnd"); }
@Deployment public void testNestedNonInterruptingEventSubprocessListenersInvoked() { runtimeService.startProcessInstanceByKey("testProcess"); runtimeService.correlateMessage("message"); Task taskInMainFlow = taskService.createTaskQuery().taskDefinitionKey("taskInMainFlow").singleResult(); assertNotNull(taskInMainFlow); Task taskInEventSubProcess = taskService.createTaskQuery().taskDefinitionKey("taskInEventSubProcess").singleResult(); assertNotNull(taskInEventSubProcess); taskService.complete(taskInMainFlow.getId()); taskService.complete(taskInEventSubProcess.getId()); List<String> collectedEvents = TestExecutionListener.collectedEvents; assertEquals("taskInMainFlow-start", collectedEvents.get(0)); assertEquals("eventSubProcess-start", collectedEvents.get(1)); assertEquals("startEventInSubProcess-start", collectedEvents.get(2)); assertEquals("startEventInSubProcess-end", collectedEvents.get(3)); assertEquals("taskInEventSubProcess-start", collectedEvents.get(4)); assertEquals("taskInMainFlow-end", collectedEvents.get(5)); assertEquals("taskInEventSubProcess-end", collectedEvents.get(6)); assertEquals("eventSubProcess-end", collectedEvents.get(7)); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("taskInMainFlow").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("startEventInSubProcess").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("taskInEventSubProcess").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("endEventInSubProcess").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("eventSubProcess").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("subProcess").finished().count()); } }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/oneTaskProcess.bpmn20.xml"}) public void testHistoricActivityInstanceQueryStartFinishAfterBefore() { Calendar startTime = Calendar.getInstance(); ClockUtil.setCurrentTime(startTime.getTime()); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", "businessKey123"); Calendar hourAgo = Calendar.getInstance(); hourAgo.add(Calendar.HOUR_OF_DAY, -1); Calendar hourFromNow = Calendar.getInstance(); hourFromNow.add(Calendar.HOUR_OF_DAY, 1); // Start/end dates assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedBefore(hourAgo.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedBefore(hourFromNow.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedAfter(hourAgo.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedAfter(hourFromNow.getTime()).count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("theTask").startedBefore(hourFromNow.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").startedBefore(hourAgo.getTime()).count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("theTask").startedAfter(hourAgo.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").startedAfter(hourFromNow.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").startedAfter(hourFromNow.getTime()).startedBefore(hourAgo.getTime()).count()); // After finishing process taskService.complete(taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult().getId()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finished().count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedBefore(hourAgo.getTime()).count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedBefore(hourFromNow.getTime()).count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedAfter(hourAgo.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedAfter(hourFromNow.getTime()).count()); assertEquals(0, historyService.createHistoricActivityInstanceQuery().activityId("theTask").finishedBefore(hourAgo.getTime()).finishedAfter(hourFromNow.getTime()).count()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelScriptTasksCompletionCondition.bpmn20.xml"}) public void testParallelScriptTasksCompletionConditionHistory() { runtimeService.startProcessInstanceByKey("miParallelScriptTaskCompletionCondition"); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().activityType("scriptTask").list(); assertEquals(2, historicActivityInstances.size()); } }
@Deployment public void testEventSubprocessBoundaryListenersInvoked() { runtimeService.startProcessInstanceByKey("testProcess"); runtimeService.correlateMessage("message"); Task taskInEventSubProcess = taskService.createTaskQuery().singleResult(); assertEquals("taskInEventSubProcess", taskInEventSubProcess.getTaskDefinitionKey()); runtimeService.correlateMessage("message2"); List<String> collectedEvents = TestExecutionListener.collectedEvents; assertEquals("taskInMainFlow-start", collectedEvents.get(0)); assertEquals("taskInMainFlow-end", collectedEvents.get(1)); assertEquals("eventSubProcess-start", collectedEvents.get(2)); assertEquals("startEventInSubProcess-start", collectedEvents.get(3)); assertEquals("startEventInSubProcess-end", collectedEvents.get(4)); assertEquals("taskInEventSubProcess-start", collectedEvents.get(5)); assertEquals("taskInEventSubProcess-end", collectedEvents.get(6)); assertEquals("eventSubProcess-end", collectedEvents.get(7)); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("taskInMainFlow").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("taskInMainFlow").canceled().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("startEventInSubProcess").finished().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("taskInEventSubProcess").canceled().count()); assertEquals(1, historyService.createHistoricActivityInstanceQuery().activityId("eventSubProcess").finished().count()); } }
/** 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()); }
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); }
@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(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()); }
private List<HistoricActivityInstance> getEndActivityInstances() { return historyService.createHistoricActivityInstanceQuery().orderByHistoricActivityInstanceEndTime().asc().completeScope().list(); }
@Deployment public void testMultiInstanceReceiveActivity() { runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); HistoricActivityInstance miBodyInstance = query.activityId("receiveTask#multiInstanceBody").singleResult(); query.activityId("receiveTask"); assertEquals(5, query.count()); List<HistoricActivityInstance> result = query.list(); for (HistoricActivityInstance instance : result) { assertEquals(miBodyInstance.getId(), instance.getParentActivityInstanceId()); } }
@Deployment(resources="org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testBoundaryCompensateEvent.bpmn20.xml") public void testCompensationServiceTaskHasEndTime() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("compensationServiceTask"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertProcessEnded(pi.getId()); }
@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)); }
private List<HistoricActivityInstance> getAllActivityInstances() { return historyService.createHistoricActivityInstanceQuery().orderByHistoricActivityInstanceStartTime().asc().list(); }