@Override public CallActivityBuilder builder() { return new CallActivityBuilder((BpmnModelInstance) modelInstance, this); }
protected void addAllIn(BpmnModelInstance modelInstance, CallActivityBuilder callActivityBuilder) { CamundaIn camundaIn = modelInstance.newInstance(CamundaIn.class); camundaIn.setCamundaVariables(ALL); callActivityBuilder.addExtensionElement(camundaIn); }
public void testCallProcessWithoutVersionTag() { // given BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("process") .startEvent() .callActivity("callActivity") .calledElement("subProcess") .camundaCalledElementBinding("versionTag") .endEvent() .done(); try { // when deployment(modelInstance); fail("expected exception"); } catch (ProcessEngineException e) { // then assertTrue(e.getMessage().contains("Could not parse BPMN process.")); assertTrue(e.getMessage().contains("Missing attribute 'calledElementVersionTag' when 'calledElementBinding' has value 'versionTag'")); } }
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(); } }
protected BpmnModelInstance getModelWithCallActivityVersionTagBinding(String versionTag) { return Bpmn.createExecutableProcess("process") .startEvent() .callActivity("callActivity") .calledElement("subProcess") .camundaCalledElementBinding("versionTag") .camundaCalledElementVersionTag(versionTag) .endEvent() .done(); }
public static BpmnModelInstance oneBpmnCallActivityProcessAsExpression(int processNumber){ return ProcessModels.newModel(processNumber) .startEvent() .callActivity() .calledElement("${NextProcess}") .camundaIn("NextProcess", "NextProcess") .endEvent() .done(); }
public void testFailStartCaseInstanceFromOtherTenantWithDeploymentBinding() { BpmnModelInstance callingProcess = Bpmn.createExecutableProcess("callingProcess") .startEvent() .callActivity() .camundaCaseRef("Case_1") .camundaCaseBinding("deployment") .endEvent() .done(); deploymentForTenant(TENANT_ONE, callingProcess); deploymentForTenant(TENANT_TWO, CMMN); try { runtimeService.createProcessInstanceByKey("callingProcess") .processDefinitionTenantId(TENANT_ONE) .execute(); fail("expected exception"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), containsString("no case definition deployed with key = 'Case_1'")); } }
private BpmnModelInstance prepareCallingProcess(String callingProcess, String calledProcess) { BpmnModelInstance calling = Bpmn.createExecutableProcess(callingProcess) .startEvent() .callActivity() .calledElement(calledProcess) .endEvent() .done(); return calling; } }
public void testFailStartCaseInstanceFromOtherTenantWithVersionBinding() { BpmnModelInstance callingProcess = Bpmn.createExecutableProcess("callingProcess") .startEvent() .callActivity() .camundaCaseRef("Case_1") .camundaCaseBinding("version") .camundaCaseVersion("2") .endEvent() .done(); deploymentForTenant(TENANT_ONE, CMMN, callingProcess); deploymentForTenant(TENANT_TWO, CMMN); deploymentForTenant(TENANT_TWO, CMMN); try { runtimeService.createProcessInstanceByKey("callingProcess") .processDefinitionTenantId(TENANT_ONE) .execute(); fail("expected exception"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), containsString("no case definition deployed with key = 'Case_1'")); } }
public void testFailStartProcessInstanceFromOtherTenantWithVersionBinding() { BpmnModelInstance callingProcess = Bpmn.createExecutableProcess("callingProcess") .startEvent() .callActivity() .calledElement("subProcess") .camundaCalledElementBinding("version") .camundaCalledElementVersion("2") .endEvent() .done(); deploymentForTenant(TENANT_ONE, callingProcess, SUB_PROCESS); deploymentForTenant(TENANT_TWO, SUB_PROCESS); deploymentForTenant(TENANT_TWO, SUB_PROCESS); try { runtimeService.createProcessInstanceByKey("callingProcess") .processDefinitionTenantId(TENANT_ONE) .execute(); fail("expected exception"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), containsString("no processes deployed with key = 'subProcess'")); } }
public void testCaseRefTenantIdConstant() { BpmnModelInstance callingProcess = Bpmn.createExecutableProcess("callingProcess") .startEvent() .callActivity() .camundaCaseRef("Case_1") .camundaCaseTenantId(TENANT_ONE) .endEvent() .done(); deploymentForTenant(TENANT_ONE, CMMN); deployment(callingProcess); runtimeService.startProcessInstanceByKey("callingProcess"); CaseInstanceQuery query = caseService.createCaseInstanceQuery().caseDefinitionKey("Case_1"); assertThat(query.tenantIdIn(TENANT_ONE).count(), is(1L)); }
public void testCalledElementTenantIdExpression() { BpmnModelInstance callingProcess = Bpmn.createExecutableProcess("callingProcess") .startEvent() .callActivity() .calledElement("subProcess") .camundaCalledElementTenantId("${'"+TENANT_ONE+"'}") .endEvent() .done(); deploymentForTenant(TENANT_ONE, SUB_PROCESS); deployment(callingProcess); runtimeService.startProcessInstanceByKey("callingProcess"); ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().processDefinitionKey("subProcess"); assertThat(query.tenantIdIn(TENANT_ONE).count(), is(1L)); }
@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 providerCalledForProcessDefinitionWithoutTenantId_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; // given a deployment without tenant id testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is invoked twice assertThat(tenantIdProvider.parameters.size(), is(2)); }
public static BpmnModelInstance oneBpmnCallActivityProcess(String calledProcessKey) { return ProcessModels.newModel() .startEvent() .callActivity("callActivity") .calledElement(calledProcessKey) .userTask("userTask") .endEvent() .done(); }
@Test public void testSetVariableInOutMappingOfCallActivity() { 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) .camundaOut(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 out mapping from call activity sets variable //-> interrupting conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_CONDITION, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableInOutputMappingOfCallActivity() { 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) .camundaOutputParameter(VARIABLE_NAME, "1") .userTask() .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 output mapping from call activity sets variable //-> interrupting conditional event is triggered tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_CONDITION, tasksAfterVariableIsSet.get(0).getName()); }
.startEvent() .callActivity("callActivity") .calledElement("simpleSubProcess") .userTask() .endEvent() .done(); callActivityBuilder.addExtensionElement(camundaIn); callActivityBuilder.addExtensionElement(camundaIn); callActivityBuilder.addExtensionElement(camundaOut); callActivityBuilder.addExtensionElement(camundaOut);
@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)); }
public static BpmnModelInstance oneCmmnCallActivityProcess(String caseCaseKey) { return ProcessModels.newModel() .startEvent() .callActivity("callActivity") .camundaCaseRef(caseCaseKey) .userTask("userTask") .endEvent() .done(); }