@Test public void triggerConditionalEventWithTransientVariable() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess(CONDITIONAL_PROCESS_KEY) .startEvent() .serviceTask() .camundaClass(SetVariableTransientDelegate.class.getName()) .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone() .endEvent() .done(); testRule.deploy(instance); // when ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(CONDITIONAL_PROCESS_KEY); // then assertEquals(true, processInstance.isEnded()); }
@Test public void testProcessWithIntermediateConditionalEvent() { //given BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .serviceTask() .camundaClass(CheckDelayedVariablesDelegate.class.getName()) .intermediateCatchEvent() .conditionalEventDefinition() .condition("${var==1}") .conditionalEventDefinitionDone() .endEvent() .done(); //when process is deployed and instance created rule.manageDeployment(rule.getRepositoryService().createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); ProcessInstanceWithVariablesImpl processInstance = (ProcessInstanceWithVariablesImpl) rule.getRuntimeService().startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); //then process definition contains property which indicates that conditional events exists Object property = processInstance.getExecutionEntity().getProcessDefinition().getProperty(BpmnParse.PROPERTYNAME_HAS_CONDITIONAL_EVENTS); assertNotNull(property); assertEquals(Boolean.TRUE, property); }
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()); }
@Test public void testEventBasedGateway() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .eventBasedGateway().id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask() .name(TASK_AFTER_CONDITION) .endEvent().done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); //given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); assertEquals(1, conditionEventSubscriptionQuery.list().size()); Execution execution = runtimeService.createExecutionQuery() .processInstanceId(procInst.getId()) .activityId(EVENT_BASED_GATEWAY_ID) .singleResult(); assertNotNull(execution); //when variable is set on execution runtimeService.setVariable(procInst.getId(), VARIABLE_NAME, 1); //then execution is at user task after intermediate conditional event Task task = taskQuery.singleResult(); assertEquals(TASK_AFTER_CONDITION, task.getName()); assertEquals(0, conditionEventSubscriptionQuery.list().size()); }
.startEvent() .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone() .startEvent() .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone()
.startEvent() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .camundaVariableEvents(CONDITIONAL_VAR_EVENT_UPDATE)
.startEvent() .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone() .startEvent() .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone()
.id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent() .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .moveToLastGateway() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(TRUE_CONDITION) .conditionalEventDefinitionDone()
.startEvent() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .camundaVariableName(VARIABLE_NAME)
.startEvent() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .camundaVariableName(VARIABLE_NAME)
@Test public void testSuspendedProcess() { final BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .endEvent().done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); // given suspended process ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); runtimeService.suspendProcessInstanceById(procInst.getId()); //when wrong variable is set runtimeService.setVariable(procInst.getId(), VARIABLE_NAME+1, 1); //then nothing happens assertTrue(runtimeService.createProcessInstanceQuery().singleResult().isSuspended()); //when variable which triggers condition is set //then exception is expected try { runtimeService.setVariable(procInst.getId(), VARIABLE_NAME, 1); fail("Should fail!"); } catch (SuspendedEntityInteractionException seie) { //expected } runtimeService.activateProcessInstanceById(procInst.getId()); tasksAfterVariableIsSet = taskService.createTaskQuery().list(); }
.id("evenBased") .intermediateCatchEvent() .conditionalEventDefinition() .condition(VAR_CONDITION) .camundaVariableEvents(Arrays.asList("create", "update"))
.id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent() .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .moveToLastGateway() .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition("${var==2}") .conditionalEventDefinitionDone()
.startEvent() .intermediateCatchEvent(NEW_CONDITION_ID) .conditionalEventDefinition() .condition(NEW_VAR_CONDITION) .conditionalEventDefinitionDone()
.id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(TRUE_CONDITION) .conditionalEventDefinitionDone()
@Test public void triggerConditionalEventWithTransientVariable() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess(CONDITIONAL_PROCESS_KEY) .startEvent() .serviceTask() .camundaClass(SetVariableTransientDelegate.class.getName()) .intermediateCatchEvent(CONDITION_ID) .conditionalEventDefinition() .condition(VAR_CONDITION) .conditionalEventDefinitionDone() .endEvent() .done(); testRule.deploy(instance); // when ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(CONDITIONAL_PROCESS_KEY); // then assertEquals(true, processInstance.isEnded()); }
@Test public void testProcessWithIntermediateConditionalEvent() { //given BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .serviceTask() .camundaClass(CheckDelayedVariablesDelegate.class.getName()) .intermediateCatchEvent() .conditionalEventDefinition() .condition("${var==1}") .conditionalEventDefinitionDone() .endEvent() .done(); //when process is deployed and instance created rule.manageDeployment(rule.getRepositoryService().createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); ProcessInstanceWithVariablesImpl processInstance = (ProcessInstanceWithVariablesImpl) rule.getRuntimeService().startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); //then process definition contains property which indicates that conditional events exists Object property = processInstance.getExecutionEntity().getProcessDefinition().getProperty(BpmnParse.PROPERTYNAME_HAS_CONDITIONAL_EVENTS); assertNotNull(property); assertEquals(Boolean.TRUE, property); }
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()); }
@Test public void testEventBasedGateway() { BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(CONDITIONAL_EVENT_PROCESS_KEY) .startEvent() .eventBasedGateway().id(EVENT_BASED_GATEWAY_ID) .intermediateCatchEvent(CONDITIONAL_EVENT) .conditionalEventDefinition() .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask() .name(TASK_AFTER_CONDITION) .endEvent().done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); //given ProcessInstance procInst = runtimeService.startProcessInstanceByKey(CONDITIONAL_EVENT_PROCESS_KEY); TaskQuery taskQuery = taskService.createTaskQuery().processInstanceId(procInst.getId()); assertEquals(1, conditionEventSubscriptionQuery.list().size()); Execution execution = runtimeService.createExecutionQuery() .processInstanceId(procInst.getId()) .activityId(EVENT_BASED_GATEWAY_ID) .singleResult(); assertNotNull(execution); //when variable is set on execution runtimeService.setVariable(procInst.getId(), VARIABLE_NAME, 1); //then execution is at user task after intermediate conditional event Task task = taskQuery.singleResult(); assertEquals(TASK_AFTER_CONDITION, task.getName()); assertEquals(0, conditionEventSubscriptionQuery.list().size()); }
.startEvent() .intermediateCatchEvent(NEW_CONDITION_ID) .conditionalEventDefinition() .condition(NEW_VAR_CONDITION) .conditionalEventDefinitionDone()