@Deployment(resources={"org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) public void testSetVariableOnProcessInstanceStart() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("testVar", "testValue"); ProcessInstance pi = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); assertNotNull(variable); // the variable is in the process instance scope assertEquals(pi.getId(), variable.getActivityInstanceId()); taskService.complete(taskService.createTaskQuery().singleResult().getId()); assertProcessEnded(pi.getId()); }
@Deployment public void testSetVariableOnServiceTaskInsideSubProcess() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the process instance scope assertEquals(pi.getId(), variable.getActivityInstanceId()); assertProcessEnded(pi.getId()); }
@Deployment public void testSetVariableOnServiceTaskInsideParallelBranch() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the process instance scope assertEquals(pi.getId(), variable.getActivityInstanceId()); assertProcessEnded(pi.getId()); }
@Deployment(resources={"org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) public void testSetVariableOnProcessIntanceStartAndSetVariableLocalOnUserTask() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("testVar", "testValue"); ProcessInstance pi = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); Task task = taskService.createTaskQuery().singleResult(); assertNotNull(task); taskService.setVariableLocal(task.getId(), "testVar", "anotherTestValue"); ExecutionEntity taskExecution = (ExecutionEntity) runtimeService.createExecutionQuery().singleResult(); assertNotNull(taskExecution); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(2, query.count()); List<HistoricVariableInstance> result = query.list(); HistoricVariableInstance firstVar = result.get(0); assertEquals("testVar", firstVar.getVariableName()); assertEquals("testValue", firstVar.getValue()); // the variable is in the process instance scope assertEquals(pi.getId(), firstVar.getActivityInstanceId()); HistoricVariableInstance secondVar = result.get(1); assertEquals("testVar", secondVar.getVariableName()); assertEquals("anotherTestValue", secondVar.getValue()); // the variable is in the task scope assertEquals(taskExecution.getActivityInstanceId(), secondVar.getActivityInstanceId()); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment(resources = "org/camunda/bpm/engine/test/history/HistoricVariableInstanceTest.testImplicitVariableUpdate.bpmn20.xml") public void FAILING_testImplicitVariableUpdateActivityInstanceId() { // given ProcessInstance instance = runtimeService.startProcessInstanceByKey("serviceTaskProcess", Variables.createVariables() .putValue("listVar", new ArrayList<String>()) .putValue("delegate", new UpdateValueDelegate())); HistoricActivityInstance historicServiceTask = historyService .createHistoricActivityInstanceQuery() .activityId("task") .singleResult(); List<String> list = (List<String>) runtimeService.getVariable(instance.getId(), "listVar"); assertNotNull(list); assertEquals(1, list.size()); assertEquals(UpdateValueDelegate.NEW_ELEMENT, list.get(0)); // when HistoricVariableInstance historicVariableInstance = historyService .createHistoricVariableInstanceQuery() .variableName("listVar").singleResult(); // then assertEquals(historicServiceTask.getId(), historicVariableInstance.getActivityInstanceId()); }
@Deployment public void testSetVariableLocalOnServiceTaskInsideSubProcess() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); String activityInstanceId = historyService.createHistoricActivityInstanceQuery() .activityId("SubProcess_1") .singleResult() .getId(); HistoricVariableInstance variable = query.singleResult(); // the variable is in the sub process scope assertEquals(activityInstanceId, variable.getActivityInstanceId()); assertProcessEnded(pi.getId()); }
@Deployment public void testSetVariableLocalOnServiceTaskInsideParallelBranch() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); HistoricActivityInstance serviceTask = historyService.createHistoricActivityInstanceQuery() .activityId("serviceTask1") .singleResult(); assertNotNull(serviceTask); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the service task scope assertEquals(serviceTask.getId(), variable.getActivityInstanceId()); assertProcessEnded(pi.getId()); }
public static HistoricVariableInstanceDto fromHistoricVariableInstance(HistoricVariableInstance historicVariableInstance) { HistoricVariableInstanceDto dto = new HistoricVariableInstanceDto(); dto.id = historicVariableInstance.getId(); dto.name = historicVariableInstance.getName(); dto.processDefinitionKey = historicVariableInstance.getProcessDefinitionKey(); dto.processDefinitionId = historicVariableInstance.getProcessDefinitionId(); dto.processInstanceId = historicVariableInstance.getProcessInstanceId(); dto.executionId = historicVariableInstance.getExecutionId(); dto.activityInstanceId = historicVariableInstance.getActivityInstanceId(); dto.caseDefinitionKey = historicVariableInstance.getCaseDefinitionKey(); dto.caseDefinitionId = historicVariableInstance.getCaseDefinitionId(); dto.caseInstanceId = historicVariableInstance.getCaseInstanceId(); dto.caseExecutionId = historicVariableInstance.getCaseExecutionId(); dto.taskId = historicVariableInstance.getTaskId(); dto.tenantId = historicVariableInstance.getTenantId(); dto.state = historicVariableInstance.getState(); dto.createTime = historicVariableInstance.getCreateTime(); dto.removalTime = historicVariableInstance.getRemovalTime(); dto.rootProcessInstanceId = historicVariableInstance.getRootProcessInstanceId(); if(historicVariableInstance.getErrorMessage() == null) { VariableValueDto.fromTypedValue(dto, historicVariableInstance.getTypedValue()); } else { dto.errorMessage = historicVariableInstance.getErrorMessage(); dto.type = VariableValueDto.toRestApiTypeName(historicVariableInstance.getTypeName()); } return dto; }
@Deployment(resources={"org/camunda/bpm/engine/test/api/oneSubProcess.bpmn20.xml"}) public void testSetVariableOnUserTaskInsideSubProcess() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("startSimpleSubProcess"); Task task = taskService.createTaskQuery().singleResult(); assertNotNull(task); taskService.setVariable(task.getId(), "testVar", "testValue"); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the process instance scope assertEquals(pi.getId(), variable.getActivityInstanceId()); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment(resources={"org/camunda/bpm/engine/test/history/HistoricVariableInstanceScopeTest.testSetVariableLocalOnTaskInsideParallelBranch.bpmn"}) public void testSetVariableOnTaskInsideParallelBranch() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Task task = taskService.createTaskQuery().singleResult(); assertNotNull(task); taskService.setVariable(task.getId(), "testVar", "testValue"); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the process instance scope assertEquals(pi.getId(), variable.getActivityInstanceId()); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Test @RequiredHistoryLevel(ProcessEngineConfiguration.HISTORY_AUDIT) public void testMigrateHistoryVariableInstance() { //given ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.ONE_TASK_PROCESS) .changeElementId(ProcessModels.PROCESS_KEY, "new" + ProcessModels.PROCESS_KEY)); ProcessInstance processInstance = runtimeService.startProcessInstanceById(sourceDefinition.getId()); runtimeService.setVariable(processInstance.getId(), "test", 3537); HistoricVariableInstance instance = historyService.createHistoricVariableInstanceQuery().singleResult(); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities("userTask", "userTask") .build(); //when runtimeService.newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); //then HistoricVariableInstance migratedInstance = historyService.createHistoricVariableInstanceQuery().singleResult(); assertEquals(targetDefinition.getKey(), migratedInstance.getProcessDefinitionKey()); assertEquals(targetDefinition.getId(), migratedInstance.getProcessDefinitionId()); assertEquals(instance.getActivityInstanceId(), migratedInstance.getActivityInstanceId()); assertEquals(instance.getExecutionId(), migratedInstance.getExecutionId()); }
public void testAsyncStartEventWithAddedVariable() { // given a process definition with asynchronous start event deployment(Bpmn.createExecutableProcess("testProcess") .startEvent() .camundaAsyncBefore() .endEvent() .done()); // when create an instance with a variable ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testProcess", Variables.putValue("var1", "foo")); // and add a variable before the instance is created runtimeService.setVariable(processInstance.getId(), "var2", "bar"); executeAvailableJobs(); assertProcessEnded(processInstance.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { // then the history contains one entry for each variable HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(query.count(), 2); HistoricVariableInstance firstVariable = query.variableName("var1").singleResult(); assertNotNull(firstVariable); assertEquals(firstVariable.getValue(), "foo"); assertNotNull(firstVariable.getActivityInstanceId()); HistoricVariableInstance secondVariable = query.variableName("var2").singleResult(); assertNotNull(secondVariable); assertEquals(secondVariable.getValue(), "bar"); assertNotNull(secondVariable.getActivityInstanceId()); } }
@Deployment public void testSetVariableLocalOnTaskInsideParallelBranch() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("process"); Task task = taskService.createTaskQuery().singleResult(); assertNotNull(task); taskService.setVariableLocal(task.getId(), "testVar", "testValue"); ExecutionEntity taskExecution = (ExecutionEntity) runtimeService.createExecutionQuery() .executionId(task.getExecutionId()) .singleResult(); assertNotNull(taskExecution); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); // the variable is in the user task scope assertEquals(taskExecution.getActivityInstanceId(), variable.getActivityInstanceId()); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
/** * Fix CAM-4351 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/compensate/CompensateEventHistoryTest.testBoundaryCompensationHandlerHistory.bpmn20.xml") public void FAILING_testBoundaryCompensationHandlerHistoryVariableInstance() { // 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(); // .. setting a variable via task service API Task compensationHandler = taskService.createTaskQuery().singleResult(); runtimeService.setVariableLocal(compensationHandler.getExecutionId(), "apiVariable", "someValue"); // .. and completing compensation taskService.complete(compensationHandler.getId()); // then there is a historic variable instance for the variable set by API HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().singleResult(); assertNotNull(historicVariableInstance); assertEquals(compensationHandlerActivityInstanceId, historicVariableInstance.getActivityInstanceId()); }
/** * Fix CAM-4351 */ @Deployment(resources = "org/camunda/bpm/engine/test/bpmn/event/compensate/CompensateEventHistoryTest.testDefaultCompensationHandlerHistory.bpmn20.xml") public void FAILING_testDefaultCompensationHandlerHistoryVariableInstance() { // 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(); // .. setting a variable via task service API Task compensationHandler = taskService.createTaskQuery().singleResult(); runtimeService.setVariableLocal(compensationHandler.getExecutionId(), "apiVariable", "someValue"); // .. and completing compensation taskService.complete(compensationHandler.getId()); // then there is a historic variable instance for the variable set by API HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery().singleResult(); assertNotNull(historicVariableInstance); assertEquals(compensationHandlerActivityInstanceId, historicVariableInstance.getActivityInstanceId()); }
public void testAsyncStartEventWithChangedVariable() { // given a process definition with asynchronous start event deployment(Bpmn.createExecutableProcess("testProcess") .startEvent() .camundaAsyncBefore() .endEvent() .done()); // when create an instance with a variable ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testProcess", Variables.putValue("var", "foo")); // and update this variable before the instance is created runtimeService.setVariable(processInstance.getId(), "var", "bar"); executeAvailableJobs(); assertProcessEnded(processInstance.getId()); if (processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_ACTIVITY) { // then the history contains only one entry for the latest update (value = "bar") // - the entry for the initial value (value = "foo") is lost because of current limitations HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(query.count(), 1); HistoricVariableInstance variable = query.singleResult(); assertEquals(variable.getValue(), "bar"); assertNotNull(variable.getActivityInstanceId()); } }
@Deployment(resources={"org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml"}) public void testSetVariableLocalOnUserTask() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("oneTaskProcess"); Task task = taskService.createTaskQuery().singleResult(); assertNotNull(task); taskService.setVariableLocal(task.getId(), "testVar", "testValue"); ExecutionEntity taskExecution = (ExecutionEntity) runtimeService.createExecutionQuery() .executionId(task.getExecutionId()) .singleResult(); assertNotNull(taskExecution); HistoricVariableInstanceQuery query = historyService.createHistoricVariableInstanceQuery(); assertEquals(1, query.count()); HistoricVariableInstance variable = query.singleResult(); assertNotNull(variable); // the variable is in the task scope assertEquals(taskExecution.getActivityInstanceId(), variable.getActivityInstanceId()); taskService.complete(task.getId()); assertProcessEnded(pi.getId()); }
@Deployment(resources = {"org/camunda/bpm/engine/test/api/cmmn/oneTaskCase.cmmn"}) public void testCmmnActivityInstanceIdOnCaseExecution() { // given caseService.createCaseInstanceByKey("oneTaskCase"); String taskExecutionId = caseService .createCaseExecutionQuery() .activityId("PI_HumanTask_1") .singleResult() .getId(); // when caseService .withCaseExecution(taskExecutionId) .setVariableLocal("foo", "bar") .execute(); // then HistoricVariableInstance variable = historyService .createHistoricVariableInstanceQuery() .variableName("foo") .singleResult(); assertNotNull(variable); assertEquals(taskExecutionId, variable.getActivityInstanceId()); if(processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_AUDIT) { HistoricDetail variableDetail = historyService .createHistoricDetailQuery() .variableUpdates() .variableInstanceId(variable.getId()) .singleResult(); assertEquals(taskExecutionId, variableDetail.getActivityInstanceId()); } }
@Deployment(resources = {"org/camunda/bpm/engine/test/api/cmmn/oneTaskCase.cmmn"}) public void testCmmnActivityInstanceIdOnTask() { // given CaseInstance caseInstance = caseService.createCaseInstanceByKey("oneTaskCase"); String taskExecutionId = caseService .createCaseExecutionQuery() .activityId("PI_HumanTask_1") .singleResult() .getId(); Task task = taskService .createTaskQuery() .singleResult(); // when taskService.setVariable(task.getId(), "foo", "bar"); // then HistoricVariableInstance variable = historyService .createHistoricVariableInstanceQuery() .variableName("foo") .singleResult(); assertNotNull(variable); assertEquals(caseInstance.getId(), variable.getActivityInstanceId()); if(processEngineConfiguration.getHistoryLevel().getId() > ProcessEngineConfigurationImpl.HISTORYLEVEL_AUDIT) { HistoricDetail variableDetail = historyService .createHistoricDetailQuery() .variableUpdates() .variableInstanceId(variable.getId()) .singleResult(); assertEquals(taskExecutionId, variableDetail.getActivityInstanceId()); } }
@Deployment(resources = EXCLUSIVE_GATEWAY_PROCESS) public void testHistoricVariableInstanceForSingleActivityInstantiation() { // when ProcessInstance instance = runtimeService .createProcessInstanceByKey("exclusiveGateway") .startBeforeActivity("task1") .setVariable("aVar", "aValue") .execute(); ActivityInstance activityInstance = runtimeService.getActivityInstance(instance.getId()); // then HistoricVariableInstance historicVariable = historyService.createHistoricVariableInstanceQuery() .variableName("aVar") .singleResult(); assertNotNull(historicVariable); assertEquals(instance.getId(), historicVariable.getProcessInstanceId()); assertEquals(activityInstance.getId(), historicVariable.getActivityInstanceId()); assertEquals("aVar", historicVariable.getName()); assertEquals("aValue", historicVariable.getValue()); HistoricDetail historicDetail = historyService.createHistoricDetailQuery() .variableInstanceId(historicVariable.getId()).singleResult(); assertEquals(instance.getId(), historicDetail.getProcessInstanceId()); assertNotNull(historicDetail); // TODO: fix if this is not ok due to CAM-3886 assertNull(historicDetail.getActivityInstanceId()); assertTrue(historicDetail instanceof HistoricVariableUpdate); assertEquals("aVar", ((HistoricVariableUpdate) historicDetail).getVariableName()); assertEquals("aValue", ((HistoricVariableUpdate) historicDetail).getValue()); }