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; }
protected void verifyStates(String[] processInstances, String[] states) { for (int i = 0; i < processInstances.length; i++) { assertThat( processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processInstanceId(processInstances[i]).singleResult().getState(), is(states[i])); } } }
@Test public void testCompletedOnEndEvent() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); }
@Test @Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricProcessInstanceStateTest.testWithCallActivity.bpmn"}) public void testWithCallActivity() { processEngineRule.getRuntimeService().startProcessInstanceByKey("Main_Process"); assertThat(processEngineRule.getRuntimeService().createProcessInstanceQuery().active().list().size(), is(0)); HistoricProcessInstance entity1 = processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processDefinitionKey("Main_Process").singleResult(); HistoricProcessInstance entity2 = processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processDefinitionKey("Sub_Process").singleResult(); assertThat(entity1, is(notNullValue())); assertThat(entity2, is(notNullValue())); assertThat(entity1.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().completed().count()); assertThat(entity2.getState(), is(HistoricProcessInstance.STATE_INTERNALLY_TERMINATED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().internallyTerminated().count()); }
@Test public void testCompletionWithSuspension() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .userTask() .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); ProcessInstance processInstance = processEngineRule.getRuntimeService() .startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); //suspend processEngineRule.getRuntimeService().updateProcessInstanceSuspensionState() .byProcessInstanceId(processInstance.getId()).suspend(); entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_SUSPENDED)); //activate processEngineRule.getRuntimeService().updateProcessInstanceSuspensionState() .byProcessInstanceId(processInstance.getId()).activate(); entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); //complete task processEngineRule.getTaskService().complete( processEngineRule.getTaskService().createTaskQuery().active().singleResult().getId()); //make sure happy path ended entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); }
@Test public void testCancellationState() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .userTask() .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); ProcessInstance processInstance = processEngineRule.getRuntimeService() .startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); //same call as in ProcessInstanceResourceImpl processEngineRule.getRuntimeService().deleteProcessInstance(processInstance.getId(), REASON, false, true); entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_EXTERNALLY_TERMINATED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().externallyTerminated().count()); }
@Test public void testTerminatedInternalWithGateway() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .endEvent() .moveToLastGateway() .endEvent(TERMINATION) .done(); initEndEvent(instance, TERMINATION); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); }
@Test public void testErrorEndEvent() { BpmnModelInstance process1 = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .endEvent() .error("1") .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(process1); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().completed().count()); }
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; }
@Test public void testSateOfScriptTaskProcessWithTransactionCommitAndException() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() //add wait state .camundaAsyncAfter() .scriptTask() .scriptText("throw new RuntimeException()") .scriptFormat("groovy") .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); try { ProcessInstance pi = processEngineRule.getRuntimeService() .startProcessInstanceById(processDefinition.getId()); processEngineRule.getManagementService().executeJob( processEngineRule.getManagementService().createJobQuery().executable().singleResult().getId()); fail("exception expected"); } catch (Exception e) { //expected } assertThat(processEngineRule.getRuntimeService().createProcessInstanceQuery().active().list().size(), is(1)); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().active().count()); }
.processInstanceId(processInstance2.getId()).singleResult(); assertThat(hpi1.getState(), is(HistoricProcessInstance.STATE_SUSPENDED)); assertThat(hpi2.getState(), is(HistoricProcessInstance.STATE_SUSPENDED)); assertEquals(2, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().suspended().count()); .processInstanceId(processInstance2.getId()).singleResult(); assertThat(hpi1.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); assertThat(hpi2.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); assertEquals(2, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().active().count());
protected void verifyStates(String[] processInstances, String[] states) { for (int i = 0; i < processInstances.length; i++) { assertThat( processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processInstanceId(processInstances[i]).singleResult().getState(), is(states[i])); } } }
@Test public void testCompletedOnEndEvent() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); }
@Test @Deployment(resources = {"org/camunda/bpm/engine/test/history/HistoricProcessInstanceStateTest.testWithCallActivity.bpmn"}) public void testWithCallActivity() { processEngineRule.getRuntimeService().startProcessInstanceByKey("Main_Process"); assertThat(processEngineRule.getRuntimeService().createProcessInstanceQuery().active().list().size(), is(0)); HistoricProcessInstance entity1 = processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processDefinitionKey("Main_Process").singleResult(); HistoricProcessInstance entity2 = processEngineRule.getHistoryService().createHistoricProcessInstanceQuery() .processDefinitionKey("Sub_Process").singleResult(); assertThat(entity1, is(notNullValue())); assertThat(entity2, is(notNullValue())); assertThat(entity1.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().completed().count()); assertThat(entity2.getState(), is(HistoricProcessInstance.STATE_INTERNALLY_TERMINATED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().internallyTerminated().count()); }
@Test public void testCancellationState() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .userTask() .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); ProcessInstance processInstance = processEngineRule.getRuntimeService() .startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); //same call as in ProcessInstanceResourceImpl processEngineRule.getRuntimeService().deleteProcessInstance(processInstance.getId(), REASON, false, true); entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_EXTERNALLY_TERMINATED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().externallyTerminated().count()); }
@Test public void testTerminatedInternalWithGateway() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .parallelGateway() .endEvent() .moveToLastGateway() .endEvent(TERMINATION) .done(); initEndEvent(instance, TERMINATION); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); }
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; }
@Test public void testErrorEndEvent() { BpmnModelInstance process1 = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .endEvent() .error("1") .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(process1); processEngineRule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_COMPLETED)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().completed().count()); }
@Test public void testSateOfScriptTaskProcessWithTransactionCommitAndException() { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() //add wait state .camundaAsyncAfter() .scriptTask() .scriptText("throw new RuntimeException()") .scriptFormat("groovy") .endEvent() .done(); ProcessDefinition processDefinition = processEngineTestRule.deployAndGetDefinition(instance); try { ProcessInstance pi = processEngineRule.getRuntimeService() .startProcessInstanceById(processDefinition.getId()); processEngineRule.getManagementService().executeJob( processEngineRule.getManagementService().createJobQuery().executable().singleResult().getId()); fail("exception expected"); } catch (Exception e) { //expected } assertThat(processEngineRule.getRuntimeService().createProcessInstanceQuery().active().list().size(), is(1)); HistoricProcessInstance entity = getHistoricProcessInstanceWithAssertion(processDefinition); assertThat(entity.getState(), is(HistoricProcessInstance.STATE_ACTIVE)); assertEquals(1, processEngineRule.getHistoryService().createHistoricProcessInstanceQuery().active().count()); }