private void assertThatInstanceHasAllImportantInformation(HistoricProcessInstance historicProcessInstance) { assertThat(historicProcessInstance, notNullValue()); assertThat(historicProcessInstance.getId(), notNullValue()); assertThat(historicProcessInstance.getProcessDefinitionKey(), is("process")); assertThat(historicProcessInstance.getProcessDefinitionVersion(), notNullValue()); assertThat(historicProcessInstance.getProcessDefinitionId(), notNullValue()); assertThat(historicProcessInstance.getDurationInMillis(), notNullValue()); assertThat(historicProcessInstance.getStartTime(), notNullValue()); assertThat(historicProcessInstance.getEndTime(), notNullValue()); }
public static HistoricProcessInstance createMockHistoricProcessInstanceUnfinished() { HistoricProcessInstance mock = mock(HistoricProcessInstance.class); when(mock.getId()).thenReturn(EXAMPLE_PROCESS_INSTANCE_ID); when(mock.getBusinessKey()).thenReturn(EXAMPLE_PROCESS_INSTANCE_BUSINESS_KEY); when(mock.getProcessDefinitionId()).thenReturn(EXAMPLE_PROCESS_DEFINITION_ID); when(mock.getDeleteReason()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_DELETE_REASON); when(mock.getEndTime()).thenReturn(null); when(mock.getStartTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_PROCESS_INSTANCE_START_TIME)); when(mock.getDurationInMillis()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_DURATION_MILLIS); return mock; }
public static HistoricProcessInstance createMockHistoricProcessInstance(String tenantId) { HistoricProcessInstance mock = mock(HistoricProcessInstance.class); when(mock.getId()).thenReturn(EXAMPLE_PROCESS_INSTANCE_ID); when(mock.getBusinessKey()).thenReturn(EXAMPLE_PROCESS_INSTANCE_BUSINESS_KEY); when(mock.getProcessDefinitionKey()).thenReturn(EXAMPLE_PROCESS_DEFINITION_KEY); when(mock.getProcessDefinitionName()).thenReturn(EXAMPLE_PROCESS_DEFINITION_NAME); when(mock.getProcessDefinitionVersion()).thenReturn(EXAMPLE_PROCESS_DEFINITION_VERSION); when(mock.getProcessDefinitionId()).thenReturn(EXAMPLE_PROCESS_DEFINITION_ID); when(mock.getDeleteReason()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_DELETE_REASON); when(mock.getRemovalTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_PROCESS_INSTANCE_REMOVAL_TIME)); when(mock.getEndTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_PROCESS_INSTANCE_END_TIME)); when(mock.getStartTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_PROCESS_INSTANCE_START_TIME)); when(mock.getDurationInMillis()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_DURATION_MILLIS); when(mock.getStartUserId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_START_USER_ID); when(mock.getStartActivityId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_START_ACTIVITY_ID); when(mock.getRootProcessInstanceId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_ROOT_PROCESS_INSTANCE_ID); when(mock.getSuperProcessInstanceId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_SUPER_PROCESS_INSTANCE_ID); when(mock.getSuperCaseInstanceId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_SUPER_CASE_INSTANCE_ID); when(mock.getCaseInstanceId()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_CASE_INSTANCE_ID); when(mock.getTenantId()).thenReturn(tenantId); when(mock.getState()).thenReturn(EXAMPLE_HISTORIC_PROCESS_INSTANCE_STATE); return mock; }
public void assertReportResults(List<DurationReportResult> actual) { assertEquals("Report size", periodToProcessInstancesMap.size(), actual.size()); for (DurationReportResult reportResult : actual) { assertEquals("Period unit", periodUnit, reportResult.getPeriodUnit()); int period = reportResult.getPeriod(); Set<String> processInstancesInPeriod = periodToProcessInstancesMap.get(period); assertNotNull("Unexpected report for period " + period, processInstancesInPeriod); List<HistoricProcessInstance> historicProcessInstances = historyService .createHistoricProcessInstanceQuery() .processInstanceIds(processInstancesInPeriod) .finished() .list(); long max = 0; long min = 0; long sum = 0; for (int i = 0; i < historicProcessInstances.size(); i++) { HistoricProcessInstance historicProcessInstance = historicProcessInstances.get(i); Long duration = historicProcessInstance.getDurationInMillis(); sum = sum + duration; max = i > 0 ? Math.max(max, duration) : duration; min = i > 0 ? Math.min(min, duration) : duration; } long avg = sum / historicProcessInstances.size(); assertEquals("maximum", max, reportResult.getMaximum()); assertEquals("minimum", min, reportResult.getMinimum()); assertEquals("average", avg, reportResult.getAverage(), 1); } }
@Deployment public void testProcessInstanceShouldBeActive() { // given // when String processInstanceId = runtimeService.startProcessInstanceByKey("process").getId(); // then HistoricProcessInstance historicProcessInstance = historyService .createHistoricProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult(); assertNull(historicProcessInstance.getEndTime()); assertNull(historicProcessInstance.getDurationInMillis()); }
public static HistoricProcessInstanceDto fromHistoricProcessInstance(HistoricProcessInstance historicProcessInstance) { HistoricProcessInstanceDto dto = new HistoricProcessInstanceDto(); dto.id = historicProcessInstance.getId(); dto.businessKey = historicProcessInstance.getBusinessKey(); dto.processDefinitionId = historicProcessInstance.getProcessDefinitionId(); dto.processDefinitionKey = historicProcessInstance.getProcessDefinitionKey(); dto.processDefinitionName = historicProcessInstance.getProcessDefinitionName(); dto.processDefinitionVersion = historicProcessInstance.getProcessDefinitionVersion(); dto.startTime = historicProcessInstance.getStartTime(); dto.endTime = historicProcessInstance.getEndTime(); dto.removalTime = historicProcessInstance.getRemovalTime(); dto.durationInMillis = historicProcessInstance.getDurationInMillis(); dto.startUserId = historicProcessInstance.getStartUserId(); dto.startActivityId = historicProcessInstance.getStartActivityId(); dto.deleteReason = historicProcessInstance.getDeleteReason(); dto.rootProcessInstanceId = historicProcessInstance.getRootProcessInstanceId(); dto.superProcessInstanceId = historicProcessInstance.getSuperProcessInstanceId(); dto.superCaseInstanceId = historicProcessInstance.getSuperCaseInstanceId(); dto.caseInstanceId = historicProcessInstance.getCaseInstanceId(); dto.tenantId = historicProcessInstance.getTenantId(); dto.state = historicProcessInstance.getState(); return dto; }
public static HistoricProcessInstanceDto fromHistoricProcessInstance(HistoricProcessInstance historicProcessInstance) { HistoricProcessInstanceDto dto = new HistoricProcessInstanceDto(); dto.id = historicProcessInstance.getId(); dto.businessKey = historicProcessInstance.getBusinessKey(); dto.processDefinitionId = historicProcessInstance.getProcessDefinitionId(); dto.processDefinitionKey = historicProcessInstance.getProcessDefinitionKey(); dto.processDefinitionName = historicProcessInstance.getProcessDefinitionName(); dto.processDefinitionVersion = historicProcessInstance.getProcessDefinitionVersion(); dto.startTime = historicProcessInstance.getStartTime(); dto.endTime = historicProcessInstance.getEndTime(); dto.removalTime = historicProcessInstance.getRemovalTime(); dto.durationInMillis = historicProcessInstance.getDurationInMillis(); dto.startUserId = historicProcessInstance.getStartUserId(); dto.startActivityId = historicProcessInstance.getStartActivityId(); dto.deleteReason = historicProcessInstance.getDeleteReason(); dto.rootProcessInstanceId = historicProcessInstance.getRootProcessInstanceId(); dto.superProcessInstanceId = historicProcessInstance.getSuperProcessInstanceId(); dto.superCaseInstanceId = historicProcessInstance.getSuperCaseInstanceId(); dto.caseInstanceId = historicProcessInstance.getCaseInstanceId(); dto.tenantId = historicProcessInstance.getTenantId(); dto.state = historicProcessInstance.getState(); return dto; }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/oneTaskProcess.bpmn20.xml"}) public void testLongRunningHistoricDataCreatedForProcessExecution() { final long ONE_YEAR = 1000 * 60 * 60 * 24 * 365; Calendar cal = Calendar.getInstance(); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); Date now = cal.getTime(); ClockUtil.setCurrentTime(now); final ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", "myBusinessKey"); assertEquals(1, historyService.createHistoricProcessInstanceQuery().unfinished().count()); assertEquals(0, historyService.createHistoricProcessInstanceQuery().finished().count()); HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult(); assertEquals(now, historicProcessInstance.getStartTime()); List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list(); assertEquals(1, tasks.size()); // in this test scenario we assume that one year after the process start, the // user completes the task (incredible speedy!) cal.add(Calendar.YEAR, 1); Date oneYearLater = cal.getTime(); ClockUtil.setCurrentTime(oneYearLater); taskService.complete(tasks.get(0).getId()); historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult(); assertEquals(now, historicProcessInstance.getStartTime()); assertEquals(oneYearLater, historicProcessInstance.getEndTime()); assertTrue(historicProcessInstance.getDurationInMillis() >= ONE_YEAR); assertTrue(((HistoricProcessInstanceEventEntity)historicProcessInstance).getDurationRaw() >= ONE_YEAR); assertEquals(0, historyService.createHistoricProcessInstanceQuery().unfinished().count()); assertEquals(1, historyService.createHistoricProcessInstanceQuery().finished().count()); }
/** * CAM-4067 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/end/TerminateEndEventTest.testTerminateInSubProcessConcurrent.bpmn") public void testTerminateInSubProcessConcurrentShouldNotEndProcessInstanceInHistory() throws Exception { // when process instance is started and terminate end event in subprocess executed ProcessInstance pi = runtimeService.startProcessInstanceByKey("terminateEndEventExample"); // then the historic process instance should not appear ended assertProcessNotEnded(pi.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().singleResult(); assertNotNull(hpi); assertNull(hpi.getEndTime()); assertNull(hpi.getDurationInMillis()); assertNull(hpi.getDeleteReason()); } }
/** * CAM-4067 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/end/TerminateEndEventTest.testTerminateInSubProcess.bpmn") public void testTerminateInSubProcessShouldNotEndProcessInstanceInHistory() throws Exception { // when process instance is started and terminate end event in subprocess executed ProcessInstance pi = runtimeService.startProcessInstanceByKey("terminateEndEventExample"); // then the historic process instance should not appear ended assertProcessNotEnded(pi.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().singleResult(); assertNotNull(hpi); assertNull(hpi.getEndTime()); assertNull(hpi.getDurationInMillis()); assertNull(hpi.getDeleteReason()); } }
assertEquals(noon, historicProcessInstance.getStartTime()); assertNull(historicProcessInstance.getEndTime()); assertNull(historicProcessInstance.getDurationInMillis()); assertNull(historicProcessInstance.getCaseInstanceId()); assertEquals(noon, historicProcessInstance.getStartTime()); assertEquals(twentyFiveSecsAfterNoon, historicProcessInstance.getEndTime()); assertEquals(new Long(25 * 1000), historicProcessInstance.getDurationInMillis()); assertTrue(((HistoricProcessInstanceEventEntity) historicProcessInstance).getDurationRaw() >= 25000); assertNull(historicProcessInstance.getCaseInstanceId());
private void assertThatInstanceHasAllImportantInformation(HistoricProcessInstance historicProcessInstance) { assertThat(historicProcessInstance, notNullValue()); assertThat(historicProcessInstance.getId(), notNullValue()); assertThat(historicProcessInstance.getProcessDefinitionKey(), is("process")); assertThat(historicProcessInstance.getProcessDefinitionVersion(), notNullValue()); assertThat(historicProcessInstance.getProcessDefinitionId(), notNullValue()); assertThat(historicProcessInstance.getDurationInMillis(), notNullValue()); assertThat(historicProcessInstance.getStartTime(), notNullValue()); assertThat(historicProcessInstance.getEndTime(), notNullValue()); }
public void assertReportResults(List<DurationReportResult> actual) { assertEquals("Report size", periodToProcessInstancesMap.size(), actual.size()); for (DurationReportResult reportResult : actual) { assertEquals("Period unit", periodUnit, reportResult.getPeriodUnit()); int period = reportResult.getPeriod(); Set<String> processInstancesInPeriod = periodToProcessInstancesMap.get(period); assertNotNull("Unexpected report for period " + period, processInstancesInPeriod); List<HistoricProcessInstance> historicProcessInstances = historyService .createHistoricProcessInstanceQuery() .processInstanceIds(processInstancesInPeriod) .finished() .list(); long max = 0; long min = 0; long sum = 0; for (int i = 0; i < historicProcessInstances.size(); i++) { HistoricProcessInstance historicProcessInstance = historicProcessInstances.get(i); Long duration = historicProcessInstance.getDurationInMillis(); sum = sum + duration; max = i > 0 ? Math.max(max, duration) : duration; min = i > 0 ? Math.min(min, duration) : duration; } long avg = sum / historicProcessInstances.size(); assertEquals("maximum", max, reportResult.getMaximum()); assertEquals("minimum", min, reportResult.getMinimum()); assertEquals("average", avg, reportResult.getAverage(), 1); } }
@Deployment public void testProcessInstanceShouldBeActive() { // given // when String processInstanceId = runtimeService.startProcessInstanceByKey("process").getId(); // then HistoricProcessInstance historicProcessInstance = historyService .createHistoricProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult(); assertNull(historicProcessInstance.getEndTime()); assertNull(historicProcessInstance.getDurationInMillis()); }
public static HistoricProcessInstanceDto fromHistoricProcessInstance(HistoricProcessInstance historicProcessInstance) { HistoricProcessInstanceDto dto = new HistoricProcessInstanceDto(); dto.id = historicProcessInstance.getId(); dto.businessKey = historicProcessInstance.getBusinessKey(); dto.processDefinitionId = historicProcessInstance.getProcessDefinitionId(); dto.processDefinitionKey = historicProcessInstance.getProcessDefinitionKey(); dto.processDefinitionName = historicProcessInstance.getProcessDefinitionName(); dto.processDefinitionVersion = historicProcessInstance.getProcessDefinitionVersion(); dto.startTime = historicProcessInstance.getStartTime(); dto.endTime = historicProcessInstance.getEndTime(); dto.removalTime = historicProcessInstance.getRemovalTime(); dto.durationInMillis = historicProcessInstance.getDurationInMillis(); dto.startUserId = historicProcessInstance.getStartUserId(); dto.startActivityId = historicProcessInstance.getStartActivityId(); dto.deleteReason = historicProcessInstance.getDeleteReason(); dto.rootProcessInstanceId = historicProcessInstance.getRootProcessInstanceId(); dto.superProcessInstanceId = historicProcessInstance.getSuperProcessInstanceId(); dto.superCaseInstanceId = historicProcessInstance.getSuperCaseInstanceId(); dto.caseInstanceId = historicProcessInstance.getCaseInstanceId(); dto.tenantId = historicProcessInstance.getTenantId(); dto.state = historicProcessInstance.getState(); return dto; }
@Deployment(resources = {"org/camunda/bpm/engine/test/history/oneTaskProcess.bpmn20.xml"}) public void testLongRunningHistoricDataCreatedForProcessExecution() { final long ONE_YEAR = 1000 * 60 * 60 * 24 * 365; Calendar cal = Calendar.getInstance(); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); Date now = cal.getTime(); ClockUtil.setCurrentTime(now); final ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", "myBusinessKey"); assertEquals(1, historyService.createHistoricProcessInstanceQuery().unfinished().count()); assertEquals(0, historyService.createHistoricProcessInstanceQuery().finished().count()); HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult(); assertEquals(now, historicProcessInstance.getStartTime()); List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list(); assertEquals(1, tasks.size()); // in this test scenario we assume that one year after the process start, the // user completes the task (incredible speedy!) cal.add(Calendar.YEAR, 1); Date oneYearLater = cal.getTime(); ClockUtil.setCurrentTime(oneYearLater); taskService.complete(tasks.get(0).getId()); historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult(); assertEquals(now, historicProcessInstance.getStartTime()); assertEquals(oneYearLater, historicProcessInstance.getEndTime()); assertTrue(historicProcessInstance.getDurationInMillis() >= ONE_YEAR); assertTrue(((HistoricProcessInstanceEventEntity)historicProcessInstance).getDurationRaw() >= ONE_YEAR); assertEquals(0, historyService.createHistoricProcessInstanceQuery().unfinished().count()); assertEquals(1, historyService.createHistoricProcessInstanceQuery().finished().count()); }
/** * CAM-4067 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/end/TerminateEndEventTest.testTerminateInSubProcessConcurrent.bpmn") public void testTerminateInSubProcessConcurrentShouldNotEndProcessInstanceInHistory() throws Exception { // when process instance is started and terminate end event in subprocess executed ProcessInstance pi = runtimeService.startProcessInstanceByKey("terminateEndEventExample"); // then the historic process instance should not appear ended assertProcessNotEnded(pi.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().singleResult(); assertNotNull(hpi); assertNull(hpi.getEndTime()); assertNull(hpi.getDurationInMillis()); assertNull(hpi.getDeleteReason()); } }
/** * CAM-4067 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/end/TerminateEndEventTest.testTerminateInSubProcess.bpmn") public void testTerminateInSubProcessShouldNotEndProcessInstanceInHistory() throws Exception { // when process instance is started and terminate end event in subprocess executed ProcessInstance pi = runtimeService.startProcessInstanceByKey("terminateEndEventExample"); // then the historic process instance should not appear ended assertProcessNotEnded(pi.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_NONE) { HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().singleResult(); assertNotNull(hpi); assertNull(hpi.getEndTime()); assertNull(hpi.getDurationInMillis()); assertNull(hpi.getDeleteReason()); } }
assertEquals(noon, historicProcessInstance.getStartTime()); assertNull(historicProcessInstance.getEndTime()); assertNull(historicProcessInstance.getDurationInMillis()); assertNull(historicProcessInstance.getCaseInstanceId()); assertEquals(noon, historicProcessInstance.getStartTime()); assertEquals(twentyFiveSecsAfterNoon, historicProcessInstance.getEndTime()); assertEquals(new Long(25 * 1000), historicProcessInstance.getDurationInMillis()); assertTrue(((HistoricProcessInstanceEventEntity) historicProcessInstance).getDurationRaw() >= 25000); assertNull(historicProcessInstance.getCaseInstanceId());