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()); }
public ActivityPerfTestResult(HistoricActivityInstance historicActivity) { activityId = historicActivity.getActivityId(); activityInstanceId = historicActivity.getId(); processInstanceId = historicActivity.getProcessInstanceId(); startTime = historicActivity.getStartTime(); endTime = historicActivity.getEndTime(); duration = historicActivity.getDurationInMillis(); }
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; }
@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/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()); } } }
@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 testUserTaskStillRunning() { runtimeService.startProcessInstanceByKey("nonInterruptingEvent"); JobQuery jobQuery = managementService.createJobQuery(); assertEquals(1, jobQuery.count()); managementService.executeJob(jobQuery.singleResult().getId()); HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("userTask"); assertEquals(1, historicActivityInstanceQuery.count()); assertNull(historicActivityInstanceQuery.singleResult().getEndTime()); historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("end1"); assertEquals(0, historicActivityInstanceQuery.count()); historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("timer"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("end2"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); }
@Deployment public void testBoundaryMessageEventOnSubprocessWithIntermediateMessageCatch() { // given // a process instance waiting inside the intermediate message catch inside the subprocess ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testProcess"); // when // I cancel the subprocess runtimeService.correlateMessage("cancelMessage"); // then // the process instance is ended assertProcessEnded(processInstance.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { // and all activity instances in history have an end time set List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery().list(); for (HistoricActivityInstance historicActivityInstance : hais) { assertNotNull(historicActivityInstance.getEndTime()); } } }
@Deployment(resources="org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testBoundaryCancelEvent.bpmn20.xml") public void testTransaction() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("transaction"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testBoundaryCancelEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("catchCancel"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("cancelBoundaryCatch", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@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(resources = {"org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testHistoricActivityInstanceTimerEvent.bpmn20.xml"}) public void testHistoricActivityInstanceMessageEvent() { runtimeService.startProcessInstanceByKey("catchSignal"); JobQuery jobQuery = managementService.createJobQuery(); assertEquals(1, jobQuery.count()); EventSubscriptionQuery eventSubscriptionQuery = runtimeService.createEventSubscriptionQuery(); assertEquals(1, eventSubscriptionQuery.count()); runtimeService.correlateMessage("newInvoice"); TaskQuery taskQuery = taskService.createTaskQuery(); Task task = taskQuery.singleResult(); assertEquals("afterMessage", task.getName()); HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("gw1"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("messageEvent"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); assertEquals("intermediateMessageCatch", historicActivityInstanceQuery.singleResult().getActivityType()); }
@Deployment public void testHistoricActivityInstanceTimerEvent() { runtimeService.startProcessInstanceByKey("catchSignal"); assertEquals(1, runtimeService.createEventSubscriptionQuery().count()); JobQuery jobQuery = managementService.createJobQuery(); assertEquals(1, jobQuery.count()); Job timer = jobQuery.singleResult(); managementService.executeJob(timer.getId()); TaskQuery taskQuery = taskService.createTaskQuery(); Task task = taskQuery.singleResult(); assertEquals("afterTimer", task.getName()); HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("gw1"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery().activityId("timerEvent"); assertEquals(1, historicActivityInstanceQuery.count()); assertNotNull(historicActivityInstanceQuery.singleResult().getEndTime()); assertEquals("intermediateTimer", historicActivityInstanceQuery.singleResult().getActivityType()); }
@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); }
@Deployment public void testInterruptingBoundaryMessageEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().messageEventSubscriptionName("newMessage").singleResult(); runtimeService.messageEventReceived("newMessage", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("message"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundaryMessage", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testInterruptingBoundarySignalEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().signalEventSubscriptionName("newSignal").singleResult(); runtimeService.signalEventReceived("newSignal", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("signal"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundarySignal", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testInterruptingBoundaryTimerEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Job job = managementService.createJobQuery().singleResult(); assertNotNull(job); managementService.executeJob(job.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("timer"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundaryTimer", query.singleResult().getActivityType()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testNonInterruptingBoundaryMessageEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().messageEventSubscriptionName("newMessage").singleResult(); runtimeService.messageEventReceived("newMessage", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("message"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundaryMessage", query.singleResult().getActivityType()); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }
@Deployment public void testNonInterruptingBoundarySignalEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery().signalEventSubscriptionName("newSignal").singleResult(); runtimeService.signalEventReceived("newSignal", execution.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("signal"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundarySignal", query.singleResult().getActivityType()); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }
@Deployment public void testNonInterruptingBoundaryTimerEvent() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Job job = managementService.createJobQuery().singleResult(); assertNotNull(job); managementService.executeJob(job.getId()); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("timer"); assertEquals(1, query.count()); assertNotNull(query.singleResult().getEndTime()); assertEquals("boundaryTimer", query.singleResult().getActivityType()); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }