public static final BpmnModelInstance subProcessProcess(String key) { return Bpmn.createExecutableProcess(key) .startEvent() .subProcess() .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, InstantiationListener.class.getName()) .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, RemovalListener.class.getName()) .embeddedSubProcess() .startEvent() .userTask("userTask") .endEvent() .subProcessDone() .endEvent() .done(); }
public void testPropagateTenantIdToEmbeddedSubprocess() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .userTask() .endEvent() .subProcessDone() .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); List<Execution> executions = runtimeService.createExecutionQuery().list(); assertThat(executions.size(), is(2)); assertThat(executions.get(0).getTenantId(), is(TENANT_ID)); // inherit the tenant id from parent execution (e.g. process instance) assertThat(executions.get(1).getTenantId(), is(TENANT_ID)); }
@Override public BpmnModelInstance getSourceProcess() { return modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo(EventSubProcessModels.SUB_PROCESS_ID) .triggerByEvent() .embeddedSubProcess() .startEvent(EVENT_SUB_PROCESS_START_ID).signal(EventSubProcessModels.SIGNAL_NAME) .userTask(EVENT_SUB_PROCESS_TASK_ID) .endEvent() .subProcessDone() .done(); }
@Override public BpmnModelInstance getSourceProcess() { return modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo(EventSubProcessModels.SUB_PROCESS_ID) .triggerByEvent() .embeddedSubProcess() .startEvent(EVENT_SUB_PROCESS_START_ID).timerWithDate(TIMER_DATE) .userTask(EVENT_SUB_PROCESS_TASK_ID) .endEvent() .subProcessDone() .done(); }
@Override public BpmnModelInstance getSourceProcess() { return modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo(EventSubProcessModels.SUB_PROCESS_ID) .triggerByEvent() .embeddedSubProcess() .startEvent(EVENT_SUB_PROCESS_START_ID) .condition(EventSubProcessModels.VAR_CONDITION) .userTask(EVENT_SUB_PROCESS_TASK_ID) .endEvent() .subProcessDone() .done(); }
public void testEmbeddedSubprocess() { deploymentForTenant("tenant1", Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .endEvent() .subProcessDone() .endEvent() .done()); AssertingJavaDelegate.addAsserts(hasTenantId("tenant1")); startProcessInstance(PROCESS_DEFINITION_KEY); }
public static BpmnModelInstance subProcessBpmnCallActivityProcess(String calledProcessKey) { return ProcessModels.newModel() .startEvent() .subProcess("subProcess") .embeddedSubProcess() .startEvent() .callActivity("callActivity") .calledElement(calledProcessKey) .userTask("userTask") .endEvent() .subProcessDone() .endEvent() .done(); }
public void testTaskInsideEmbeddedSubprocess() { deployment(Bpmn.createExecutableProcess("testProcess") .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .endEvent() .subProcessDone() .endEvent() .done()); AssertingJavaDelegate.addAsserts( new DelegateExecutionAsserter() { public void doAssert(DelegateExecution execution) { assertFalse(execution.equals(execution.getProcessInstance())); assertNull(execution.getSuperExecution()); } } ); runtimeService.startProcessInstanceByKey("testProcess"); }
public static BpmnModelInstance prepareCompensationEventProcess() { return Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess("subProcess") .embeddedSubProcess() .startEvent() .endEvent() .subProcessDone() .intermediateThrowEvent(FAILING_EVENT) .camundaAsyncBefore(true) .camundaFailedJobRetryTimeCycle(SCHEDULE) .compensateEventDefinition() .compensateEventDefinitionDone() .serviceTask() .camundaClass(FailingDelegate.class.getName()) .endEvent() .done(); }
private BpmnModelInstance prepareFailingSubProcess() { BpmnModelInstance bpmnModelInstance = Bpmn.createExecutableProcess(PROCESS_ID) .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .serviceTask() .camundaClass(FAILING_CLASS) .camundaAsyncBefore() .endEvent() .subProcessDone() .endEvent() .done(); return bpmnModelInstance; } }
@Test public void testSetLocalScopeInSubprocessWithStartExecutionListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent().id("activityId") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_START, ExecutionListener.class) .endEvent() .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetLocalScopeInSubprocessWithEndExecutionListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent() .endEvent().id("activityId") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ExecutionListener.class) .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetLocalScopeInSubprocessWithJavaDelegate() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent() .serviceTask().id("activityId") .camundaClass(JavaDelegate.class) .endEvent() .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetLocalScopeInSubprocessWithTaskListener() { testHelper.deploy(Bpmn.createExecutableProcess("process") .startEvent() .subProcess().embeddedSubProcess() .startEvent() .userTask().id("activityId") .camundaTaskListenerClass(TaskListener.EVENTNAME_CREATE, TaskListener.class) .endEvent() .subProcessDone() .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); }
@Test public void testSetVariableOnStartExecutionListenerInSubProcessWithBoundary() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .subProcess(SUB_PROCESS_ID) .camundaExecutionListenerExpression(ExecutionListener.EVENTNAME_START, EXPR_SET_VARIABLE) .embeddedSubProcess() .startEvent() .userTask(TASK_WITH_CONDITION_ID) .name(TASK_WITH_CONDITION) .endEvent() .subProcessDone() .endEvent() .done(); modelInstance = addEventSubProcess(modelInstance, SUB_PROCESS_ID, TASK_AFTER_COND_START_EVENT_IN_SUB_PROCESS, true); deployMixedProcess(modelInstance, CONDITIONAL_EVENT_PROCESS_KEY, SUB_PROCESS_ID, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); //when start listener sets variable //then conditional boundary should not triggered but conditional start event tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_CONDITIONAL_START_EVENT, tasksAfterVariableIsSet.get(0).getName()); }
@Test public void testSetVariableOnOutputMappingInSubProcess() { final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .subProcess(SUB_PROCESS_ID) .embeddedSubProcess() .startEvent() .userTask(TASK_WITH_CONDITION_ID) .camundaOutputParameter(VARIABLE_NAME, "1") .name(TASK_WITH_CONDITION) .endEvent() .subProcessDone() .endEvent() .done(); deployMixedProcess(modelInstance, SUB_PROCESS_ID, true); // given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); Task task = taskQuery.singleResult(); //when task before is completed taskService.complete(task.getId()); //then conditional boundary should not triggered but conditional start event tasksAfterVariableIsSet = taskQuery.list(); assertEquals(TASK_AFTER_CONDITIONAL_START_EVENT, tasksAfterVariableIsSet.get(0).getName()); }
private BpmnModelInstance prepareComplexProcess(String calledProcessA,String calledProcessB,String calledProcessC) { BpmnModelInstance calling = Bpmn.createExecutableProcess("calling") .startEvent() .parallelGateway("fork1") .subProcess() .embeddedSubProcess() .startEvent() .parallelGateway("fork2") .callActivity("callingA") .calledElement(calledProcessA) .endEvent("endA") .moveToNode("fork2") .callActivity("callingB") .calledElement(calledProcessB) .endEvent() .subProcessDone() .moveToNode("fork1") .callActivity("callingC") .calledElement(calledProcessC) .endEvent() .done(); return calling; }
/** * CAM-8005 - StackOverflowError must not happen. */ @Test public void testDeleteProcessInstancesManyParallelSubprocesses() { final BpmnModelInstance multiInstanceWithSubprocess = Bpmn.createExecutableProcess("multiInstanceWithSubprocess") .startEvent() .subProcess() .embeddedSubProcess() .startEvent() .userTask("userTask") .endEvent() .subProcessDone() .multiInstance().cardinality("300").multiInstanceDone() .endEvent() .done(); testRule.deploy(multiInstanceWithSubprocess); final ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("multiInstanceWithSubprocess"); runtimeService.deleteProcessInstance(processInstance.getId(), "some reason"); assertEquals(0, runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).count()); }
@Test public void testMapActivityWithUnmappedParentWhichHasAEventSubProcessChild() { BpmnModelInstance testProcess = modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo("subProcess") .triggerByEvent() .embeddedSubProcess() .startEvent().message(MESSAGE_NAME) .endEvent() .subProcessDone() .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(testProcess); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(testProcess); MigrationPlan migrationPlan = runtimeService .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); assertThat(migrationPlan) .hasSourceProcessDefinition(sourceProcessDefinition) .hasTargetProcessDefinition(targetProcessDefinition) .hasInstructions( migrate("userTask").to("userTask") ); }
@Test public void testMapProcessDefinitionWithEventSubProcess() { BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .addSubProcessTo(ProcessModels.PROCESS_KEY) .triggerByEvent() .embeddedSubProcess() .startEvent().message(MESSAGE_NAME) .endEvent() .subProcessDone() .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(testProcess); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(testProcess); MigrationPlan migrationPlan = runtimeService .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); assertThat(migrationPlan) .hasSourceProcessDefinition(sourceProcessDefinition) .hasTargetProcessDefinition(targetProcessDefinition) .hasInstructions( migrate("userTask").to("userTask") ); }