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 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/history/HistoricActivityInstanceTest.startEventTypesForEventSubprocess.bpmn20.xml") public void testErrorEventSubprocess() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("shouldThrowError", true); runtimeService.startProcessInstanceByKey("process", vars); HistoricActivityInstance historicActivity = historyService.createHistoricActivityInstanceQuery() .activityId("errorStartEvent").singleResult(); assertEquals("errorStartEvent", historicActivity.getActivityType()); }
@Deployment(resources = "org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.startEventTypesForEventSubprocess.bpmn20.xml") public void testMessageEventSubprocess() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("shouldThrowError", false); runtimeService.startProcessInstanceByKey("process", vars); runtimeService.correlateMessage("newMessage"); HistoricActivityInstance historicActivity = historyService.createHistoricActivityInstanceQuery() .activityId("messageStartEvent").singleResult(); assertEquals("messageStartEvent", historicActivity.getActivityType()); }
@Deployment(resources = "org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.startEventTypesForEventSubprocess.bpmn20.xml") public void testSignalEventSubprocess() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("shouldThrowError", false); runtimeService.startProcessInstanceByKey("process", vars); runtimeService.signalEventReceived("newSignal"); HistoricActivityInstance historicActivity = historyService.createHistoricActivityInstanceQuery() .activityId("signalStartEvent").singleResult(); assertEquals("signalStartEvent", historicActivity.getActivityType()); }
@Deployment(resources = "org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.startEventTypesForEventSubprocess.bpmn20.xml") public void testTimerEventSubprocess() { Map<String, Object> vars = new HashMap<String, Object>(); vars.put("shouldThrowError", false); runtimeService.startProcessInstanceByKey("process", vars); Job timerJob = managementService.createJobQuery().singleResult(); managementService.executeJob(timerJob.getId()); HistoricActivityInstance historicActivity = historyService.createHistoricActivityInstanceQuery() .activityId("timerStartEvent").singleResult(); assertEquals("startTimerEvent", historicActivity.getActivityType()); }
@Deployment(resources="org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testEvents.bpmn") public void testIntermediateCatchEventTypes() { HistoricActivityInstanceQuery query = startEventTestProcess(""); query.activityId("intermediateSignalCatchEvent"); assertEquals(1, query.count()); assertEquals("intermediateSignalCatch", query.singleResult().getActivityType()); query.activityId("intermediateMessageCatchEvent"); assertEquals(1, query.count()); assertEquals("intermediateMessageCatch", query.singleResult().getActivityType()); query.activityId("intermediateTimerCatchEvent"); assertEquals(1, query.count()); assertEquals("intermediateTimer", query.singleResult().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()); } } }
@Deployment(resources="org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testEvents.bpmn") public void testStartEventTypes() { HistoricActivityInstanceQuery query = startEventTestProcess(""); query.activityId("timerStartEvent"); assertEquals(1, query.count()); assertEquals("startTimerEvent", query.singleResult().getActivityType()); query.activityId("noneStartEvent"); assertEquals(1, query.count()); assertEquals("startEvent", query.singleResult().getActivityType()); query = startEventTestProcess("CAM-2365"); query.activityId("messageStartEvent"); assertEquals(1, query.count()); assertEquals("messageStartEvent", query.singleResult().getActivityType()); }
@Deployment(resources="org/camunda/bpm/engine/test/history/HistoricActivityInstanceTest.testEvents.bpmn") public void testIntermediateThrowEventTypes() { HistoricActivityInstanceQuery query = startEventTestProcess(""); query.activityId("intermediateSignalThrowEvent"); assertEquals(1, query.count()); assertEquals("intermediateSignalThrow", query.singleResult().getActivityType()); query.activityId("intermediateMessageThrowEvent"); assertEquals(1, query.count()); assertEquals("intermediateMessageThrowEvent", query.singleResult().getActivityType()); query.activityId("intermediateNoneThrowEvent"); assertEquals(1, query.count()); assertEquals("intermediateNoneThrowEvent", query.singleResult().getActivityType()); query.activityId("intermediateCompensationThrowEvent"); assertEquals(1, query.count()); assertEquals("intermediateCompensationThrowEvent", query.singleResult().getActivityType()); }
@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 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 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 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()); }
@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()); }