public static BpmnModelInstance oneBpmnCallActivityProcessPassingVariables(int processNumber, int calledProcessNumber){ return ProcessModels.newModel(processNumber) .startEvent() .callActivity() .calledElement("Process"+calledProcessNumber) .camundaInputParameter("NextProcess", "Process"+(processNumber+1)) .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); } }
public static BpmnModelInstance oneBpmnCallActivityProcessAsExpression(int processNumber){ return ProcessModels.newModel(processNumber) .startEvent() .callActivity() .calledElement("${NextProcess}") .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); }
public static BpmnModelInstance oneBpmnCallActivityProcessAsExpressionAsync(int processNumber){ return ProcessModels.newModel(processNumber) .startEvent() .camundaAsyncBefore(true) .callActivity() .calledElement("${NextProcess}") .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); }
public static BpmnModelInstance oneBpmnCallActivityProcessPassingVariables(int processNumber, int calledProcessNumber){ return ProcessModels.newModel(processNumber) .startEvent() .callActivity() .calledElement("Process"+calledProcessNumber) .camundaInputParameter("NextProcess", "Process"+(processNumber+1)) .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); } }
@Test public void providerCalledWithVariables_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).camundaIn("varName", "varName").done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess", Variables.createVariables().putValue("varName", true)); // then the tenant id provider is passed in the variable assertThat(tenantIdProvider.parameters.get(1).getVariables().size(), is(1)); assertThat((Boolean) tenantIdProvider.parameters.get(1).getVariables().get("varName"), is(true)); }
@Test public void testVariableAccessOnDeleteInCalledProcess() { // given VariablesCollectingListener.reset(); BpmnModelInstance callActivityProcess = Bpmn.createExecutableProcess("calling") .startEvent() .callActivity() .camundaIn("foo", "foo") .calledElement("called") .endEvent() .done(); BpmnModelInstance calledProcess = Bpmn.createExecutableProcess("called") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_DELETE, VariablesCollectingListener.class.getName()) .endEvent() .done(); testRule.deploy(callActivityProcess, calledProcess); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("calling", Variables.createVariables().putValue("foo", "bar")); // when runtimeService.deleteProcessInstance(processInstance.getId(), null); // then VariableMap collectedVariables = VariablesCollectingListener.getCollectedVariables(); assertNotNull(collectedVariables); assertEquals(1, collectedVariables.size()); assertEquals("bar", collectedVariables.get("foo")); }
@Test public void testNonInterruptingSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
public void testSetVariableInSubProcessStartEventWithEndListener () throws Exception { //given BpmnModelInstance topProcess = Bpmn.createExecutableProcess("topProcess") .startEvent() .callActivity() .calledElement("subProcess") .camundaIn("executionListenerCounter","executionListenerCounter") .endEvent() .done(); BpmnModelInstance subProcess = Bpmn.createExecutableProcess("subProcess") .startEvent() .camundaAsyncBefore() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, "org.camunda.bpm.engine.test.history.SubProcessActivityStartListener") .endEvent() .done(); org.camunda.bpm.engine.repository.Deployment deployment = repositoryService.createDeployment() .addModelInstance("process.bpmn", topProcess) .addModelInstance("subProcess.bpmn", subProcess) .deploy(); //when runtimeService.startProcessInstanceByKey("topProcess", Variables.createVariables().putValue("executionListenerCounter",1)); managementService.executeJob(managementService.createJobQuery().active().singleResult().getId()); //then assertThat(historyService.createHistoricVariableInstanceQuery().count(), is (3L)); repositoryService.deleteDeployment(deployment.getId(),true); }
@Test public void testSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_WITH_CONDITION_ID, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testNonInterruptingSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_WITH_CONDITION_ID, false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
public static BpmnModelInstance oneBpmnCallActivityProcessAsExpression(int processNumber){ return ProcessModels.newModel(processNumber) .startEvent() .callActivity() .calledElement("${NextProcess}") .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); }
public static BpmnModelInstance oneBpmnCallActivityProcessAsExpressionAsync(int processNumber){ return ProcessModels.newModel(processNumber) .startEvent() .camundaAsyncBefore(true) .callActivity() .calledElement("${NextProcess}") .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); }
@Test public void providerCalledWithVariables_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).camundaIn("varName", "varName").done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess", Variables.createVariables().putValue("varName", true)); // then the tenant id provider is passed in the variable assertThat(tenantIdProvider.parameters.get(1).getVariables().size(), is(1)); assertThat((Boolean) tenantIdProvider.parameters.get(1).getVariables().get("varName"), is(true)); }
@Test public void testVariableAccessOnDeleteInCalledProcess() { // given VariablesCollectingListener.reset(); BpmnModelInstance callActivityProcess = Bpmn.createExecutableProcess("calling") .startEvent() .callActivity() .camundaIn("foo", "foo") .calledElement("called") .endEvent() .done(); BpmnModelInstance calledProcess = Bpmn.createExecutableProcess("called") .startEvent() .userTask() .camundaTaskListenerClass(TaskListener.EVENTNAME_DELETE, VariablesCollectingListener.class.getName()) .endEvent() .done(); testRule.deploy(callActivityProcess, calledProcess); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("calling", Variables.createVariables().putValue("foo", "bar")); // when runtimeService.deleteProcessInstance(processInstance.getId(), null); // then VariableMap collectedVariables = VariablesCollectingListener.getCollectedVariables(); assertNotNull(collectedVariables); assertEquals(1, collectedVariables.size()); assertEquals("bar", collectedVariables.get("foo")); }
public void testSetVariableInSubProcessStartEventWithEndListener () throws Exception { //given BpmnModelInstance topProcess = Bpmn.createExecutableProcess("topProcess") .startEvent() .callActivity() .calledElement("subProcess") .camundaIn("executionListenerCounter","executionListenerCounter") .endEvent() .done(); BpmnModelInstance subProcess = Bpmn.createExecutableProcess("subProcess") .startEvent() .camundaAsyncBefore() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, "org.camunda.bpm.engine.test.history.SubProcessActivityStartListener") .endEvent() .done(); org.camunda.bpm.engine.repository.Deployment deployment = repositoryService.createDeployment() .addModelInstance("process.bpmn", topProcess) .addModelInstance("subProcess.bpmn", subProcess) .deploy(); //when runtimeService.startProcessInstanceByKey("topProcess", Variables.createVariables().putValue("executionListenerCounter",1)); managementService.executeJob(managementService.createJobQuery().active().singleResult().getId()); //then assertThat(historyService.createHistoricVariableInstanceQuery().count(), is (3L)); repositoryService.deleteDeployment(deployment.getId(),true); }
@Test public void testSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_WITH_CONDITION_ID, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testNonInterruptingSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalBoundaryEventProcess(modelInstance, TASK_WITH_CONDITION_ID, false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testNonInterruptingSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, false); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableInInMappingOfCallActivity() { engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, DELEGATED_PROCESS).deploy()); final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .userTask(TASK_BEFORE_CONDITION_ID) .name(TASK_BEFORE_CONDITION) .callActivity(TASK_WITH_CONDITION_ID) .calledElement(DELEGATED_PROCESS_KEY) .camundaIn(VARIABLE_NAME, VARIABLE_NAME) .userTask().name(TASK_AFTER_OUTPUT_MAPPING) .endEvent() .done(); deployConditionalEventSubProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); assertNotNull(task); assertEquals(TASK_BEFORE_CONDITION, task.getName()); //when task is completed taskService.complete(task.getId()); //then in mapping from call activity sets variable //-> interrupting conditional event is not triggered, since variable is only locally tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_OUTPUT_MAPPING, tasksAfterVariableIsSet.get(0).getName()); }