public static HistoricActivityInstanceDto fromHistoricActivityInstance(HistoricActivityInstance historicActivityInstance) { HistoricActivityInstanceDto dto = new HistoricActivityInstanceDto(); dto.id = historicActivityInstance.getId(); dto.parentActivityInstanceId = historicActivityInstance.getParentActivityInstanceId(); dto.activityId = historicActivityInstance.getActivityId(); dto.activityName = historicActivityInstance.getActivityName(); dto.activityType = historicActivityInstance.getActivityType(); dto.processDefinitionKey = historicActivityInstance.getProcessDefinitionKey(); dto.processDefinitionId = historicActivityInstance.getProcessDefinitionId(); dto.processInstanceId = historicActivityInstance.getProcessInstanceId(); dto.executionId = historicActivityInstance.getExecutionId(); dto.taskId = historicActivityInstance.getTaskId(); dto.calledProcessInstanceId = historicActivityInstance.getCalledProcessInstanceId(); dto.calledCaseInstanceId = historicActivityInstance.getCalledCaseInstanceId(); dto.assignee = historicActivityInstance.getAssignee(); dto.startTime = historicActivityInstance.getStartTime(); dto.endTime = historicActivityInstance.getEndTime(); dto.durationInMillis = historicActivityInstance.getDurationInMillis(); dto.canceled = historicActivityInstance.isCanceled(); dto.completeScope = historicActivityInstance.isCompleteScope(); dto.tenantId = historicActivityInstance.getTenantId(); dto.removalTime = historicActivityInstance.getRemovalTime(); dto.rootProcessInstanceId = historicActivityInstance.getRootProcessInstanceId(); return dto; } }
public ActivityPerfTestResult(HistoricActivityInstance historicActivity) { activityId = historicActivity.getActivityId(); activityInstanceId = historicActivity.getId(); processInstanceId = historicActivity.getProcessInstanceId(); startTime = historicActivity.getStartTime(); endTime = historicActivity.getEndTime(); duration = historicActivity.getDurationInMillis(); }
private void assertThatActivitiesHaveAllImportantInformation(HistoricActivityInstance activityInstance) { assertThat(activityInstance, notNullValue()); assertThat(activityInstance.getActivityName(), is("task")); assertThat(activityInstance.getActivityType(), is("userTask")); assertThat(activityInstance.getStartTime(), notNullValue()); assertThat(activityInstance.getEndTime(), nullValue()); assertThat(activityInstance.getProcessDefinitionKey(), is("process")); assertThat(activityInstance.getProcessDefinitionId(), notNullValue()); }
@Deployment public void testHistoricActivityInstanceNoop() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("noopProcess"); HistoricActivityInstance historicActivityInstance = historyService.createHistoricActivityInstanceQuery().activityId("noop").singleResult(); assertEquals("noop", historicActivityInstance.getActivityId()); assertEquals("serviceTask", historicActivityInstance.getActivityType()); assertNotNull(historicActivityInstance.getProcessDefinitionId()); assertEquals(processInstance.getId(), historicActivityInstance.getProcessInstanceId()); assertEquals(processInstance.getId(), historicActivityInstance.getExecutionId()); assertNotNull(historicActivityInstance.getStartTime()); assertNotNull(historicActivityInstance.getEndTime()); assertTrue(historicActivityInstance.getDurationInMillis() >= 0); }
public static HistoricActivityInstance createMockRunningHistoricActivityInstance() { HistoricActivityInstance mock = mock(HistoricActivityInstance.class); when(mock.getId()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_ID); when(mock.getParentActivityInstanceId()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_PARENT_ACTIVITY_INSTANCE_ID); when(mock.getActivityId()).thenReturn(EXAMPLE_ACTIVITY_ID); when(mock.getActivityName()).thenReturn(EXAMPLE_ACTIVITY_NAME); when(mock.getActivityType()).thenReturn(EXAMPLE_ACTIVITY_TYPE); when(mock.getProcessDefinitionId()).thenReturn(EXAMPLE_PROCESS_DEFINITION_ID); when(mock.getProcessInstanceId()).thenReturn(EXAMPLE_PROCESS_INSTANCE_ID); when(mock.getExecutionId()).thenReturn(EXAMPLE_EXECUTION_ID); when(mock.getTaskId()).thenReturn(EXAMPLE_TASK_ID); when(mock.getCalledProcessInstanceId()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_CALLED_PROCESS_INSTANCE_ID); when(mock.getCalledCaseInstanceId()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_CALLED_CASE_INSTANCE_ID); when(mock.getAssignee()).thenReturn(EXAMPLE_TASK_ASSIGNEE_NAME); when(mock.getStartTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_START_TIME)); when(mock.getEndTime()).thenReturn(null); when(mock.getDurationInMillis()).thenReturn(null); return mock; }
.activityId("miTasks#multiInstanceBody").singleResult(); assertNotNull(multiInstanceBodyInstance); assertEquals(pi.getId(), multiInstanceBodyInstance.getParentActivityInstanceId()); assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); assertNotNull(hai.getAssignee()); assertEquals("userTask", hai.getActivityType()); assertEquals(multiInstanceBodyInstance.getId(), hai.getParentActivityInstanceId()); assertNotNull(hai.getTaskId());
.activityId("subProcess").singleResult(); assertNotNull(subProcessInstance); assertEquals("subProcess", subProcessInstance.getActivityId()); assertNotNull(subProcessInstance.getId()); assertFalse(instance.getId().equals(subProcessInstance.getId())); assertNotNull(subProcessInstance.getStartTime()); assertNull(subProcessInstance.getEndTime()); assertEquals("theSubProcessStart", startEventInstance.getActivityId()); assertNotNull(startEventInstance.getId()); assertFalse(instance.getId().equals(startEventInstance.getId())); assertNotNull(startEventInstance.getStartTime()); assertNotNull(startEventInstance.getEndTime()); assertEquals("innerTask", innerTaskInstance.getActivityId()); assertNotNull(innerTaskInstance.getId()); assertFalse(instance.getId().equals(innerTaskInstance.getId())); assertNotNull(innerTaskInstance.getStartTime()); assertNull(innerTaskInstance.getEndTime());
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.sequentialUserTasks.bpmn20.xml"}) public void testSequentialUserTasksHistory() { runtimeService.startProcessInstanceByKey("miSequentialUserTasks", CollectionUtil.singletonMap("nrOfLoops", 4)).getId(); for (int i=0; i<4; i++) { taskService.complete(taskService.createTaskQuery().singleResult().getId()); } if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().activityType("userTask").list(); assertEquals(4, historicActivityInstances.size()); for (HistoricActivityInstance hai : historicActivityInstances) { assertNotNull(hai.getActivityId()); assertNotNull(hai.getActivityName()); assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); assertNotNull(hai.getAssignee()); } } if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery().list(); assertEquals(4, historicTaskInstances.size()); for (HistoricTaskInstance ht : historicTaskInstances) { assertNotNull(ht.getAssignee()); assertNotNull(ht.getStartTime()); assertNotNull(ht.getEndTime()); } } }
@Deployment public void testBoundaryErrorEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("error"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundaryError", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@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 = { DECISION_PROCESS, DECISION_SINGLE_OUTPUT_DMN }) public void testQueryByActivityInstanceId() { startProcessInstanceAndEvaluateDecision(); String activityInstanceId = historyService.createHistoricActivityInstanceQuery().activityId("task").singleResult().getId(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.activityInstanceIdIn(activityInstanceId).count(), is(1L)); assertThat(query.activityInstanceIdIn("other activity").count(), is(0L)); assertThat(query.activityInstanceIdIn(activityInstanceId, "other activity").count(), is(1L)); }
private long searchForActivityIndex(List<HistoricActivityInstance> historicActivityInstances, String activityId) { for (int i = 0; i < historicActivityInstances.size(); i++) { HistoricActivityInstance historicActivityInstance = historicActivityInstances.get(i); if (historicActivityInstance.getActivityId().equals(activityId)) { return i; } } return -1; }
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testSequentialSubProcess.bpmn20.xml"}) public void testSequentialSubProcessHistory() { runtimeService.startProcessInstanceByKey("miSequentialSubprocess"); for (int i=0; i<4; i++) { List<Task> tasks = taskService.createTaskQuery().list(); taskService.complete(tasks.get(0).getId()); taskService.complete(tasks.get(1).getId()); } // Validate history if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> onlySubProcessInstances = historyService.createHistoricActivityInstanceQuery().activityType("subProcess").list(); assertEquals(4, onlySubProcessInstances.size()); List<HistoricActivityInstance> historicInstances = historyService.createHistoricActivityInstanceQuery().activityType("subProcess").list(); assertEquals(4, historicInstances.size()); for (HistoricActivityInstance hai : historicInstances) { assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); } historicInstances = historyService.createHistoricActivityInstanceQuery().activityType("userTask").list(); assertEquals(8, historicInstances.size()); for (HistoricActivityInstance hai : historicInstances) { assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); } } }
@Deployment public void testHistoricActivityInstanceProperties() { // Start process instance runtimeService.startProcessInstanceByKey("taskAssigneeProcess"); // Get task list HistoricActivityInstance historicActivityInstance = historyService.createHistoricActivityInstanceQuery().activityId("theTask").singleResult(); Task task = taskService.createTaskQuery().singleResult(); assertEquals(task.getId(), historicActivityInstance.getTaskId()); assertEquals("kermit", historicActivityInstance.getAssignee()); // change assignee of the task taskService.setAssignee(task.getId(), "gonzo"); task = taskService.createTaskQuery().singleResult(); historicActivityInstance = historyService.createHistoricActivityInstanceQuery().activityId("theTask").singleResult(); assertEquals("gonzo", historicActivityInstance.getAssignee()); }
assertEquals("new activity name", instance.getActivityName()); assertEquals(processInstance.getId(), instance.getParentActivityInstanceId()); assertEquals("userTask", instance.getActivityType());
@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()); } } }
protected void assertMigratedTo(HistoricActivityInstance activityInstance, ProcessDefinition processDefinition, String activityId) { Assert.assertEquals(processDefinition.getId(), activityInstance.getProcessDefinitionId()); Assert.assertEquals(processDefinition.getKey(), activityInstance.getProcessDefinitionKey()); Assert.assertEquals(activityId, activityInstance.getActivityId()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/bpmn/multiinstance/MultiInstanceTest.testParallelSubProcess.bpmn20.xml"}) public void testParallelSubProcessHistory() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("miParallelSubprocess"); // Validate history if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().activityId("miSubProcess").list(); assertEquals(2, historicActivityInstances.size()); for (HistoricActivityInstance hai : historicActivityInstances) { assertNotNull(hai.getStartTime()); // now end time is null assertNull(hai.getEndTime()); assertNotNull(pi.getId(), hai.getParentActivityInstanceId()); } } for (Task task : taskService.createTaskQuery().list()) { taskService.complete(task.getId()); } // Validate history if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().activityId("miSubProcess").list(); assertEquals(2, historicActivityInstances.size()); for (HistoricActivityInstance hai : historicActivityInstances) { assertNotNull(hai.getStartTime()); assertNotNull(hai.getEndTime()); assertNotNull(pi.getId(), hai.getParentActivityInstanceId()); } } }
@Deployment(resources={ "org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) @Test public void testDeleteProcessInstanceSkipCustomListenersEnsureHistoryWritten() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); // if we skip the custom listeners, runtimeService.deleteProcessInstance(processInstance.getId(), null, true); // buit-in listeners are still invoked and thus history is written if(!ProcessEngineConfiguration.HISTORY_NONE.equals(processEngineConfiguration.getHistory())) { // verify that all historic activity instances are ended List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery().list(); for (HistoricActivityInstance hai : hais) { assertNotNull(hai.getEndTime()); } } }
@Test public void resultIsSortedByStartTime() { // given BpmnModelInstance simpleDefinition = Bpmn.createExecutableProcess("process") .startEvent("startEvent") .userTask("userTask") .endEvent("endEvent") .done(); testHelper.deploy(simpleDefinition); ClockUtil.setCurrentTime(new Date()); ProcessInstance firstProcessInstance = engineRule.getRuntimeService().startProcessInstanceByKey("process"); shiftTimeByOneMinute(); ProcessInstance secondProcessInstance = engineRule.getRuntimeService().startProcessInstanceByKey("process"); shiftTimeByOneMinute(); ProcessInstance thirdProcessInstance = engineRule.getRuntimeService().startProcessInstanceByKey("process"); // when List<HistoricActivityInstance> runningHistoricActivityInstances = optimizeService.getRunningHistoricActivityInstances(pastDate(), null, 4); // then assertThat(runningHistoricActivityInstances.size(), is(3)); assertThat(runningHistoricActivityInstances.get(0).getProcessInstanceId(), is(firstProcessInstance.getId())); assertThat(runningHistoricActivityInstances.get(1).getProcessInstanceId(), is(secondProcessInstance.getId())); assertThat(runningHistoricActivityInstances.get(2).getProcessInstanceId(), is(thirdProcessInstance.getId())); }