public ProcessInstanceSnapshotBuilder variables() { List<VariableInstance> variables = processEngine.getRuntimeService().createVariableInstanceQuery().processInstanceIdIn(processInstanceId).list(); snapshot.setVariables(variables); return this; }
@Test @Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testQueryByProcessInstanceIdWithoutAnyResult() { // given Map<String, Object> variables = new HashMap<String, Object>(); variables.put("stringVar", "test"); runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); runtimeService.startProcessInstanceByKey("oneTaskProcess"); // when VariableInstanceQuery query = runtimeService.createVariableInstanceQuery().processInstanceIdIn("aProcessInstanceId"); // then List<VariableInstance> result = query.list(); assertTrue(result.isEmpty()); assertEquals(0, query.count()); }
@Test @SuppressWarnings("unchecked") @OperateOnDeployment("clientDeployment") public void shouldSwitchContextWhenCallingFromBpmn() { ProcessInstance pi = runtimeService.startProcessInstanceByKey("testProcess"); VariableInstance decisionResult = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(pi.getId()) .variableName("result").singleResult(); List<Map<String, Object>> result = (List<Map<String, Object>>) decisionResult.getValue(); assertEquals("ok", result.get(0).get("result")); }
@Test @Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testGetValueOfSerializableVar() { // given List<String> serializable = new ArrayList<String>(); serializable.add("one"); serializable.add("two"); serializable.add("three"); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("serializableVar", serializable); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); // when VariableInstanceQuery query = runtimeService.createVariableInstanceQuery().processInstanceIdIn(processInstance.getId()); // then List<VariableInstance> result = query.list(); assertFalse(result.isEmpty()); assertEquals(1, result.size()); VariableInstance instance = result.get(0); assertEquals("serializableVar", instance.getName()); assertNotNull(instance.getValue()); assertEquals(serializable, instance.getValue()); assertEquals(ValueType.OBJECT.getName(), instance.getTypeName()); }
/** * Test case for CAM-8820 with an expression as a source. */ @Test @Deployment(resources = { "org/camunda/bpm/engine/test/bpmn/event/signal/SignalEventPayloadTests.throwSignalWithExpressionPayload.bpmn20.xml", "org/camunda/bpm/engine/test/bpmn/event/signal/SignalEventPayloadTests.catchSignalWithPayloadIntermediate.bpmn20.xml" }) public void testSignalSourceExpressionPayload() { // given Map<String, Object> variables = new HashMap<String, Object>(); variables.put("payloadVar", "Val"); ProcessInstance catchingPI = runtimeService.startProcessInstanceByKey("catchIntermediatePayloadSignal"); // when runtimeService.startProcessInstanceByKey("throwExpressionPayloadSignal", variables); // then List<VariableInstance> catchingPiVariables = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(catchingPI.getId()) .list(); assertEquals(1, catchingPiVariables.size()); assertEquals("srcExpressionResVal", catchingPiVariables.get(0).getName()); assertEquals("sourceVal", catchingPiVariables.get(0).getValue()); }
@Test public void testSerializeFileVariable() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("process").startEvent().userTask().endEvent().done(); org.camunda.bpm.engine.repository.Deployment deployment = repositoryService.createDeployment().addModelInstance("process.bpmn", modelInstance).deploy(); VariableMap variables = Variables.createVariables(); String filename = "test.txt"; String type = "text/plain"; FileValue fileValue = Variables.fileValue(filename).file("ABC".getBytes()).encoding("UTF-8").mimeType(type).create(); variables.put("file", fileValue); runtimeService.startProcessInstanceByKey("process", variables); Task task = taskService.createTaskQuery().singleResult(); VariableInstance result = runtimeService.createVariableInstanceQuery().processInstanceIdIn(task.getProcessInstanceId()).singleResult(); FileValue value = (FileValue) result.getTypedValue(); assertThat(value.getFilename(), is(filename)); assertThat(value.getMimeType(), is(type)); assertThat(value.getEncoding(), is("UTF-8")); assertThat(value.getEncodingAsCharset(), is(Charset.forName("UTF-8"))); Scanner scanner = new Scanner(value.getValue()); assertThat(scanner.nextLine(), is("ABC")); // clean up repositoryService.deleteDeployment(deployment.getId(), true); }
@Deployment(resources = { "org/camunda/bpm/engine/test/cmmn/processtask/ProcessTaskTest.testInputAllLocal.cmmn", "org/camunda/bpm/engine/test/api/oneTaskProcess.bpmn20.xml" }) public void testInputAllLocal() { // given createCaseInstanceByKey(ONE_PROCESS_TASK_CASE).getId(); String caseTaskId = queryCaseExecutionByActivityId(PROCESS_TASK).getId(); // when caseService .withCaseExecution(caseTaskId) .setVariable("aVariable", "abc") .setVariableLocal("aLocalVariable", "def") .manualStart(); // then only the local variable is mapped to the sub process instance ProcessInstance subProcessInstance = queryProcessInstance(); List<VariableInstance> variables = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(subProcessInstance.getId()) .list(); assertEquals(1, variables.size()); assertEquals("aLocalVariable", variables.get(0).getName()); }
@Deployment public void testConditionalCatchAfterEventGateway() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); // when runtimeService.setVariable(processInstance.getId(), "var", 1); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()) .variableName("foo") .singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); }
@Deployment public void testMessageCatchAfterEventGateway() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); // when runtimeService.createMessageCorrelation("foo") .processInstanceId(processInstance.getId()) .correlate(); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()) .variableName("foo") .singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); }
@Test public void shouldNotSetInitialVersionOfVariables() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process", Variables.createVariables().putValue("var", "bar")); runtimeService.setVariable(processInstance.getId(), "bar", "foo"); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask") .processInstanceIds(processInstance.getId()) .initialSetOfVariables() .execute(); // then ProcessInstance restartedProcessInstance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).active().singleResult(); List<VariableInstance> variables = runtimeService.createVariableInstanceQuery().processInstanceIdIn(restartedProcessInstance.getId()).list(); assertEquals(1, variables.size()); assertEquals("var", variables.get(0).getName()); assertEquals("bar", variables.get(0).getValue()); }
@Deployment public void testTimerCatchAfterEventGateway() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); Job job = managementService.createJobQuery() .processInstanceId(processInstance.getId()) .singleResult(); // when managementService.executeJob(job.getId()); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()) .variableName("foo") .singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); }
@Test public void shouldNotSetLocalVariables() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); Execution subProcess = runtimeService.createExecutionQuery().processInstanceId(processInstance.getId()).activityId("userTask").singleResult(); runtimeService.setVariableLocal(subProcess.getId(), "local", "foo"); runtimeService.setVariable(processInstance.getId(), "var", "bar"); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask") .processInstanceIds(processInstance.getId()) .execute(); // then ProcessInstance restartedProcessInstance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).active().singleResult(); List<VariableInstance> variables = runtimeService.createVariableInstanceQuery().processInstanceIdIn(restartedProcessInstance.getId()).list(); assertEquals(1, variables.size()); assertEquals("var", variables.get(0).getName()); assertEquals("bar", variables.get(0).getValue()); }
@Test public void shouldNotSetInitialVersionOfLocalVariables() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process", Variables.createVariables().putValue("var", "bar")); Execution subProcess = runtimeService.createExecutionQuery().processInstanceId(processInstance.getId()).activityId("userTask").singleResult(); runtimeService.setVariableLocal(subProcess.getId(), "local", "foo"); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask") .processInstanceIds(processInstance.getId()) .initialSetOfVariables() .execute(); // then ProcessInstance restartedProcessInstance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).active().singleResult(); List<VariableInstance> variables = runtimeService.createVariableInstanceQuery().processInstanceIdIn(restartedProcessInstance.getId()).list(); assertEquals(1, variables.size()); assertEquals("var", variables.get(0).getName()); assertEquals("bar", variables.get(0).getValue()); }
@Deployment public void testSignalCatchAfterEventGateway() { // given ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); Execution execution = runtimeService.createExecutionQuery() .processInstanceId(processInstance.getId()) .signalEventSubscriptionName("foo") .singleResult(); assertNotNull(execution); // when runtimeService.signalEventReceived("foo", execution.getId()); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()) .variableName("foo") .singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); }
@Test public void shouldNotSetInitialVariablesIfThereIsNoUniqueStartActivity() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(ProcessModels.TWO_TASKS_PROCESS); ProcessInstance processInstance = runtimeService.createProcessInstanceById(processDefinition.getId()) .startBeforeActivity("userTask1") .startBeforeActivity("userTask2") .setVariable("foo", "bar") .execute(); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask1") .initialSetOfVariables() .processInstanceIds(processInstance.getId()) .execute(); // then ProcessInstance restartedProcessInstance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).singleResult(); List<VariableInstance> variables = runtimeService.createVariableInstanceQuery().processInstanceIdIn(restartedProcessInstance.getId()).list(); Assert.assertEquals(0, variables.size()); }
public void testCompleteWithNonLocalVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process").startEvent().serviceTask("externalTask") .camundaType("external").camundaTopic("foo").camundaTaskPriority("100") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ReadLocalVariableListenerImpl.class) .userTask("user").endEvent().done(); deployment(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); List<LockedExternalTask> lockedTasks = externalTaskService.fetchAndLock(1, WORKER_ID).topic("foo", 1L).execute(); // when externalTaskService.complete(lockedTasks.get(0).getId(), WORKER_ID, Variables.createVariables().putValue("abc", "bar"), null); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()).singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); assertEquals("abc", variableInstance.getName()); }
@Deployment public void testScriptTaskExecutesCommandAfterUserCompletesTask() { // given String processInstanceId = startProcessInstanceByKey(DEFAULT_PROCESS_KEY).getId(); String taskId = selectSingleTask().getId(); createGrantAuthorization(TASK, taskId, userId, UPDATE); // when taskService.complete(taskId); // then disableAuthorization(); VariableInstance variableUser = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(processInstanceId) .variableName("userId") .singleResult(); assertNotNull(variableUser); assertEquals(userId, variableUser.getValue()); assertEquals(2, runtimeService.createProcessInstanceQuery().count()); enableAuthorization(); }
@Deployment public void testScriptExecutionListenerExecutesCommandAfterUserCompletesTask() { // given String processInstanceId = startProcessInstanceByKey(DEFAULT_PROCESS_KEY).getId(); String taskId = selectSingleTask().getId(); createGrantAuthorization(TASK, taskId, userId, UPDATE); // when taskService.complete(taskId); // then disableAuthorization(); VariableInstance variableUser = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(processInstanceId) .variableName("userId") .singleResult(); assertNotNull(variableUser); assertEquals(userId, variableUser.getValue()); assertEquals(2, runtimeService.createProcessInstanceQuery().count()); enableAuthorization(); }
@Deployment public void testScriptTaskListenerExecutesCommandAfterUserCompletesTask() { // given String processInstanceId = startProcessInstanceByKey(DEFAULT_PROCESS_KEY).getId(); String taskId = selectSingleTask().getId(); createGrantAuthorization(TASK, taskId, userId, UPDATE); // when taskService.complete(taskId); // then disableAuthorization(); VariableInstance variableUser = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(processInstanceId) .variableName("userId") .singleResult(); assertNotNull(variableUser); assertEquals(userId, variableUser.getValue()); assertEquals(2, runtimeService.createProcessInstanceQuery().count()); enableAuthorization(); }
@Deployment public void testScriptConditionExecutesCommandAfterUserCompletesTask() { // given String processInstanceId = startProcessInstanceByKey(DEFAULT_PROCESS_KEY).getId(); String taskId = selectSingleTask().getId(); createGrantAuthorization(TASK, taskId, userId, UPDATE); // when taskService.complete(taskId); // then disableAuthorization(); VariableInstance variableUser = runtimeService .createVariableInstanceQuery() .processInstanceIdIn(processInstanceId) .variableName("userId") .singleResult(); assertNotNull(variableUser); assertEquals(userId, variableUser.getValue()); assertEquals(2, runtimeService.createProcessInstanceQuery().count()); enableAuthorization(); }