public void testPropagateTenantIdToConcurrentExecution() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .parallelGateway("fork") .userTask() .parallelGateway("join") .endEvent() .moveToNode("fork") .userTask() .connectTo("join") .done()); startProcessInstance(PROCESS_DEFINITION_KEY); List<Execution> executions = runtimeService.createExecutionQuery().list(); assertThat(executions.size(), is(3)); assertThat(executions.get(0).getTenantId(), is(TENANT_ID)); // inherit the tenant id from process instance assertThat(executions.get(1).getTenantId(), is(TENANT_ID)); assertThat(executions.get(2).getTenantId(), is(TENANT_ID)); }
public void testConcurrentExecution() { deploymentForTenant("tenant1", Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .parallelGateway("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .parallelGateway("join") .endEvent() .moveToNode("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .connectTo("join") .done()); AssertingJavaDelegate.addAsserts(hasTenantId("tenant1")); startProcessInstance(PROCESS_DEFINITION_KEY); }
public void testConcurrentServiceTasks() { deployment(Bpmn.createExecutableProcess("testProcess") .startEvent() .parallelGateway("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .parallelGateway("join") .endEvent() .moveToNode("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .connectTo("join") .done()); AssertingJavaDelegate.addAsserts( new DelegateExecutionAsserter() { public void doAssert(DelegateExecution execution) { assertFalse(execution.equals(execution.getProcessInstance())); assertNull(execution.getSuperExecution()); } } ); runtimeService.startProcessInstanceByKey("testProcess"); }
public void testRemoveConcurrentExecutionLocalVariablesOnJoin() { deployment(Bpmn.createExecutableProcess("process") .startEvent() .parallelGateway("fork") .userTask("task1") .parallelGateway("join") .userTask("afterTask") .endEvent() .moveToNode("fork") .userTask("task2") .connectTo("join") .done()); // given runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { runtimeService.setVariableLocal(task.getExecutionId(), "var", "value"); } // when taskService.complete(tasks.get(0).getId()); taskService.complete(tasks.get(1).getId()); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
public void testRemoveConcurrentExecutionLocalVariablesOnJoin() { deployment(Bpmn.createExecutableProcess("process") .startEvent() .inclusiveGateway("fork") .userTask("task1") .inclusiveGateway("join") .userTask("afterTask") .endEvent() .moveToNode("fork") .userTask("task2") .connectTo("join") .done()); // given runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { runtimeService.setVariableLocal(task.getExecutionId(), "var", "value"); } // when taskService.complete(tasks.get(0).getId()); taskService.complete(tasks.get(1).getId()); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
protected void deployParallelProcessWithEventBasedGateway() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .parallelGateway() .id(PARALLEL_GATEWAY_ID) .userTask(TASK_BEFORE_EVENT_BASED_GW_ID) .eventBasedGateway() .id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent() .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask() .name(TASK_AFTER_CONDITION) .endEvent() .moveToNode(PARALLEL_GATEWAY_ID) .userTask(TASK_BEFORE_SERVICE_TASK_ID) .serviceTask() .camundaClass(SetVariableDelegate.class.getName()) .endEvent() .done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); }
public void testOutputParameterAvailableAfterParallelGateway() { // given BpmnModelInstance processDefinition = Bpmn.createExecutableProcess("process") .startEvent() .serviceTask() .camundaOutputParameter("variable", "A") .camundaExpression("${'this value does not matter'}") .parallelGateway("fork") .endEvent() .moveToNode("fork") .serviceTask().camundaExpression("${variable}") .receiveTask() .endEvent() .done(); // when deployment(processDefinition); runtimeService.startProcessInstanceByKey("process"); // then VariableInstance variableInstance = runtimeService .createVariableInstanceQuery() .variableName("variable") .singleResult(); assertNotNull(variableInstance); }
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; }
.name("taskAfter") .endEvent() .moveToNode("parallel") .userTask("taskBefore") .serviceTask()
.subProcessDone() .endEvent() .moveToNode("start") .subProcess(SUB_PROCESS_ID + 1) .embeddedSubProcess()
public void testPropagateTenantIdToConcurrentExecution() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .parallelGateway("fork") .userTask() .parallelGateway("join") .endEvent() .moveToNode("fork") .userTask() .connectTo("join") .done()); startProcessInstance(PROCESS_DEFINITION_KEY); List<Execution> executions = runtimeService.createExecutionQuery().list(); assertThat(executions.size(), is(3)); assertThat(executions.get(0).getTenantId(), is(TENANT_ID)); // inherit the tenant id from process instance assertThat(executions.get(1).getTenantId(), is(TENANT_ID)); assertThat(executions.get(2).getTenantId(), is(TENANT_ID)); }
public void testConcurrentExecution() { deploymentForTenant("tenant1", Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .parallelGateway("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .parallelGateway("join") .endEvent() .moveToNode("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .connectTo("join") .done()); AssertingJavaDelegate.addAsserts(hasTenantId("tenant1")); startProcessInstance(PROCESS_DEFINITION_KEY); }
public void testConcurrentServiceTasks() { deployment(Bpmn.createExecutableProcess("testProcess") .startEvent() .parallelGateway("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .parallelGateway("join") .endEvent() .moveToNode("fork") .serviceTask() .camundaClass(AssertingJavaDelegate.class.getName()) .connectTo("join") .done()); AssertingJavaDelegate.addAsserts( new DelegateExecutionAsserter() { public void doAssert(DelegateExecution execution) { assertFalse(execution.equals(execution.getProcessInstance())); assertNull(execution.getSuperExecution()); } } ); runtimeService.startProcessInstanceByKey("testProcess"); }
public void testRemoveConcurrentExecutionLocalVariablesOnJoin() { deployment(Bpmn.createExecutableProcess("process") .startEvent() .inclusiveGateway("fork") .userTask("task1") .inclusiveGateway("join") .userTask("afterTask") .endEvent() .moveToNode("fork") .userTask("task2") .connectTo("join") .done()); // given runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { runtimeService.setVariableLocal(task.getExecutionId(), "var", "value"); } // when taskService.complete(tasks.get(0).getId()); taskService.complete(tasks.get(1).getId()); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
public void testRemoveConcurrentExecutionLocalVariablesOnJoin() { deployment(Bpmn.createExecutableProcess("process") .startEvent() .parallelGateway("fork") .userTask("task1") .parallelGateway("join") .userTask("afterTask") .endEvent() .moveToNode("fork") .userTask("task2") .connectTo("join") .done()); // given runtimeService.startProcessInstanceByKey("process"); List<Task> tasks = taskService.createTaskQuery().list(); for (Task task : tasks) { runtimeService.setVariableLocal(task.getExecutionId(), "var", "value"); } // when taskService.complete(tasks.get(0).getId()); taskService.complete(tasks.get(1).getId()); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
protected void deployParallelProcessWithEventBasedGateway() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .parallelGateway() .id(PARALLEL_GATEWAY_ID) .userTask(TASK_BEFORE_EVENT_BASED_GW_ID) .eventBasedGateway() .id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent() .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask() .name(TASK_AFTER_CONDITION) .endEvent() .moveToNode(PARALLEL_GATEWAY_ID) .userTask(TASK_BEFORE_SERVICE_TASK_ID) .serviceTask() .camundaClass(SetVariableDelegate.class.getName()) .endEvent() .done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); }
public void testOutputParameterAvailableAfterParallelGateway() { // given BpmnModelInstance processDefinition = Bpmn.createExecutableProcess("process") .startEvent() .serviceTask() .camundaOutputParameter("variable", "A") .camundaExpression("${'this value does not matter'}") .parallelGateway("fork") .endEvent() .moveToNode("fork") .serviceTask().camundaExpression("${variable}") .receiveTask() .endEvent() .done(); // when deployment(processDefinition); runtimeService.startProcessInstanceByKey("process"); // then VariableInstance variableInstance = runtimeService .createVariableInstanceQuery() .variableName("variable") .singleResult(); assertNotNull(variableInstance); }
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; }
.name("taskAfter") .endEvent() .moveToNode("parallel") .userTask("taskBefore") .serviceTask()
.subProcessDone() .endEvent() .moveToNode("start") .subProcess(SUB_PROCESS_ID + 1) .embeddedSubProcess()