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; }
public static HistoricActivityInstance createMockHistoricActivityInstance(String tenantId) { 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.getProcessDefinitionKey()).thenReturn(EXAMPLE_PROCESS_DEFINITION_KEY); 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(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_END_TIME)); when(mock.getDurationInMillis()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_DURATION); when(mock.isCanceled()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_IS_CANCELED); when(mock.isCompleteScope()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_IS_COMPLETE_SCOPE); when(mock.getTenantId()).thenReturn(tenantId); when(mock.getRemovalTime()).thenReturn(DateTimeUtil.parseDate(EXAMPLE_HISTORIC_ACTIVITY_INSTANCE_REMOVAL_TIME)); when(mock.getRootProcessInstanceId()).thenReturn(EXAMPLE_HISTORIC_ACTIVITY_ROOT_PROCESS_INSTANCE_ID); return mock; }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testMigrateHistoricSubProcessInstance() { //given ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(processDefinition.getId(), processDefinition.getId()) .mapEqualActivities() .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(processDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(2, historicInstances.size()); assertMigratedTo(historicInstances.get(0), processDefinition, "subProcess"); assertMigratedTo(historicInstances.get(1), processDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId()); }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testMigrateHistoricActivityInstanceAddScope() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(2, historicInstances.size()); assertMigratedTo(historicInstances.get(0), targetDefinition, "subProcess"); assertMigratedTo(historicInstances.get(1), targetDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId()); }
assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); assertEquals(historicInstances.get(0).getId(), historicInstances.get(1).getParentActivityInstanceId());
@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()); } }
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 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; } }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_ACTIVITY) public void testHistoricActivityInstanceBecomeScope() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapEqualActivities() .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceDefinition.getId()); // when rule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then List<HistoricActivityInstance> historicInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstance.getId()) .unfinished() .orderByActivityId() .asc() .list(); Assert.assertEquals(1, historicInstances.size()); assertMigratedTo(historicInstances.get(0), targetDefinition, "userTask"); assertEquals(processInstance.getId(), historicInstances.get(0).getParentActivityInstanceId()); }
@Deployment public void testScopeActivity() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("userTask"); assertEquals(1, query.count()); HistoricActivityInstance historicActivityInstance = query.singleResult(); assertEquals(pi.getId(), historicActivityInstance.getParentActivityInstanceId()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@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()); } } }
.activityId("miTasks#multiInstanceBody").singleResult(); assertNotNull(multiInstanceBodyInstance); assertEquals(pi.getId(), multiInstanceBodyInstance.getParentActivityInstanceId()); assertNotNull(hai.getAssignee()); assertEquals("userTask", hai.getActivityType()); assertEquals(multiInstanceBodyInstance.getId(), hai.getParentActivityInstanceId()); assertNotNull(hai.getTaskId());
@Deployment public void testMultiInstanceScopeActivity() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); HistoricActivityInstance miBodyInstance = query.activityId("userTask#multiInstanceBody").singleResult(); query.activityId("userTask"); assertEquals(5, query.count()); List<HistoricActivityInstance> result = query.list(); for (HistoricActivityInstance instance : result) { assertEquals(miBodyInstance.getId(), instance.getParentActivityInstanceId()); } List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }
@Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/compensate/CompensateEventHistoryTest.testBoundaryCompensationHandlerHistory.bpmn20.xml") public void testBoundaryCompensationHandlerHistoryActivityInstance() { // given a process instance ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("boundaryHandlerProcess"); // when throwing compensation Task beforeCompensationTask = taskService.createTaskQuery().singleResult(); taskService.complete(beforeCompensationTask.getId()); String compensationHandlerActivityInstanceId = runtimeService .getActivityInstance(processInstance.getId()) .getActivityInstances("compensationHandler")[0] .getId(); // .. and completing compensation Task compensationHandler = taskService.createTaskQuery().singleResult(); taskService.complete(compensationHandler.getId()); // then there is a historic activity instance for the compensation handler HistoricActivityInstance historicCompensationHandlerInstance = historyService .createHistoricActivityInstanceQuery() .activityId("compensationHandler") .singleResult(); assertNotNull(historicCompensationHandlerInstance); assertEquals(compensationHandlerActivityInstanceId, historicCompensationHandlerInstance.getId()); assertEquals(processInstance.getId(), historicCompensationHandlerInstance.getParentActivityInstanceId()); }
@Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/compensate/CompensateEventHistoryTest.testDefaultCompensationHandlerHistory.bpmn20.xml") public void testDefaultCompensationHandlerHistoryActivityInstance() { // given a process instance ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("defaultHandlerProcess"); // when throwing compensation Task beforeCompensationTask = taskService.createTaskQuery().singleResult(); taskService.complete(beforeCompensationTask.getId()); ActivityInstance tree = runtimeService.getActivityInstance(processInstance.getId()); String compensationHandlerActivityInstanceId = tree .getActivityInstances("compensationHandler")[0] .getId(); String subProcessActivityInstanceId = tree .getActivityInstances("subProcess")[0] .getId(); // .. and completing compensation Task compensationHandler = taskService.createTaskQuery().singleResult(); taskService.complete(compensationHandler.getId()); // then there is a historic activity instance for the compensation handler HistoricActivityInstance historicCompensationHandlerInstance = historyService .createHistoricActivityInstanceQuery() .activityId("compensationHandler") .singleResult(); assertNotNull(historicCompensationHandlerInstance); assertEquals(compensationHandlerActivityInstanceId, historicCompensationHandlerInstance.getId()); assertEquals(subProcessActivityInstanceId, historicCompensationHandlerInstance.getParentActivityInstanceId()); }
assertEquals(historicActivityInstance.getParentActivityInstanceId(), activityInstance.getParentActivityInstanceId());
assertMigratedTo(instance, targetProcessDefinition, "userTask2"); assertEquals("new activity name", instance.getActivityName()); assertEquals(processInstance.getId(), instance.getParentActivityInstanceId()); assertEquals("userTask", instance.getActivityType());
@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 public void testScopeActivity() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); query.activityId("userTask"); assertEquals(1, query.count()); HistoricActivityInstance historicActivityInstance = query.singleResult(); assertEquals(pi.getId(), historicActivityInstance.getParentActivityInstanceId()); Task task = taskService.createTaskQuery().singleResult(); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testMultiInstanceScopeActivity() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery(); HistoricActivityInstance miBodyInstance = query.activityId("userTask#multiInstanceBody").singleResult(); query.activityId("userTask"); assertEquals(5, query.count()); List<HistoricActivityInstance> result = query.list(); for (HistoricActivityInstance instance : result) { assertEquals(miBodyInstance.getId(), instance.getParentActivityInstanceId()); } List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { taskService.complete(task.getId()); } assertProcessEnded(pi.getId()); }