@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).message(MESSAGE_NAME) .subProcessDone() .done(); MessageTrigger trigger = new MessageTrigger(); trigger.engine = engine; trigger.messageName = MESSAGE_NAME; trigger.activityId = startEventId; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).timerWithDuration("PT10M") .subProcessDone() .done(); TimerEventTrigger trigger = new TimerEventTrigger(); trigger.engine = engine; trigger.activityId = startEventId; trigger.handlerType = TimerStartEventSubprocessJobHandler.TYPE; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).signal(SIGNAL_NAME) .subProcessDone() .done(); SignalTrigger trigger = new SignalTrigger(); trigger.engine = engine; trigger.signalName = SIGNAL_NAME; trigger.activityId = startEventId; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId) .condition(VAR_CONDITION) .subProcessDone() .done(); ConditionalEventTrigger trigger = new ConditionalEventTrigger(); trigger.engine = engine; trigger.variableName = "any"; trigger.variableValue = "any"; trigger.activityId = startEventId; return trigger; }
.id("eventSubProcess") .triggerByEvent() .embeddedSubProcess()
.id("eventSubProcess") .triggerByEvent() .embeddedSubProcess()
protected void deployConditionalEventSubProcess(BpmnModelInstance model, String parentId, boolean isInterrupting) { final BpmnModelInstance modelInstance = modify(model) .addSubProcessTo(parentId) .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess() .startEvent() .interrupting(isInterrupting) .conditionalEventDefinition(CONDITIONAL_EVENT) .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask("taskAfterCond") .name(TASK_AFTER_CONDITION) .endEvent().done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); }
@Test public void testCompensationBoundaryHierarchyPreservation() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(CompensationModels.COMPENSATION_ONE_TASK_SUBPROCESS_MODEL); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(CompensationModels.COMPENSATION_ONE_TASK_SUBPROCESS_MODEL) .addSubProcessTo(ProcessModels.PROCESS_KEY) .id("addedSubProcess") .embeddedSubProcess() .startEvent() .endEvent() .done()); try { // when rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("subProcess", "addedSubProcess") .mapActivities("compensationBoundary", "compensationBoundary") .build(); Assert.fail("exception expected"); } catch (MigrationPlanValidationException e) { // then assertThat(e.getValidationReport()) .hasInstructionFailures("compensationBoundary", "The closest mapped ancestor 'subProcess' is mapped to scope 'addedSubProcess' " + "which is not an ancestor of target scope 'compensationBoundary'" ); } }
@Test public void testMigrateProcessInstanceWithEventSubProcess() { BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .addSubProcessTo(ProcessModels.PROCESS_KEY) .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess() .startEvent("eventSubProcessStart").message(MESSAGE_NAME) .endEvent() .subProcessDone() .done(); assertGeneratedMigrationPlan(testProcess, testProcess) .hasInstructions( migrate("eventSubProcess").to("eventSubProcess"), migrate("eventSubProcessStart").to("eventSubProcessStart"), migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(testProcess, ProcessModels.ONE_TASK_PROCESS) .hasInstructions( migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(ProcessModels.ONE_TASK_PROCESS, testProcess) .hasInstructions( migrate("userTask").to("userTask") ); }
ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(CompensationModels.DOUBLE_SUBPROCESS_MODEL) .addSubProcessTo("innerSubProcess") .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess()
.id("eventSubProcess1") .triggerByEvent() .embeddedSubProcess()
@Test public void testMigrateSubProcessWithEventSubProcess() { BpmnModelInstance testProcess = modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo("subProcess") .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess() .startEvent("eventSubProcessStart").message(MESSAGE_NAME) .endEvent() .subProcessDone() .done(); assertGeneratedMigrationPlan(testProcess, testProcess) .hasInstructions( migrate("eventSubProcess").to("eventSubProcess"), migrate("eventSubProcessStart").to("eventSubProcessStart"), migrate("subProcess").to("subProcess"), migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(testProcess, ProcessModels.SUBPROCESS_PROCESS) .hasInstructions( migrate("subProcess").to("subProcess"), migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(ProcessModels.SUBPROCESS_PROCESS, testProcess) .hasInstructions( migrate("subProcess").to("subProcess"), migrate("userTask").to("userTask") ); }
BpmnModelInstance testProcess = modify(ProcessModels.SUBPROCESS_PROCESS) .addSubProcessTo("subProcess") .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess()
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).message(MESSAGE_NAME) .subProcessDone() .done(); MessageTrigger trigger = new MessageTrigger(); trigger.engine = engine; trigger.messageName = MESSAGE_NAME; trigger.activityId = startEventId; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).signal(SIGNAL_NAME) .subProcessDone() .done(); SignalTrigger trigger = new SignalTrigger(); trigger.engine = engine; trigger.signalName = SIGNAL_NAME; trigger.activityId = startEventId; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId) .condition(VAR_CONDITION) .subProcessDone() .done(); ConditionalEventTrigger trigger = new ConditionalEventTrigger(); trigger.engine = engine; trigger.variableName = "any"; trigger.variableValue = "any"; trigger.activityId = startEventId; return trigger; }
@Override public MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, String parentId, String subProcessId, String startEventId) { ModifiableBpmnModelInstance.wrap(modelInstance) .addSubProcessTo(parentId) .id(subProcessId) .triggerByEvent() .embeddedSubProcess() .startEvent(startEventId).timerWithDuration("PT10M") .subProcessDone() .done(); TimerEventTrigger trigger = new TimerEventTrigger(); trigger.engine = engine; trigger.activityId = startEventId; trigger.handlerType = TimerStartEventSubprocessJobHandler.TYPE; return trigger; }
protected void deployConditionalEventSubProcess(BpmnModelInstance model, String parentId, boolean isInterrupting) { final BpmnModelInstance modelInstance = modify(model) .addSubProcessTo(parentId) .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess() .startEvent() .interrupting(isInterrupting) .conditionalEventDefinition(CONDITIONAL_EVENT) .condition(CONDITION_EXPR) .conditionalEventDefinitionDone() .userTask("taskAfterCond") .name(TASK_AFTER_CONDITION) .endEvent().done(); engine.manageDeployment(repositoryService.createDeployment().addModelInstance(CONDITIONAL_MODEL, modelInstance).deploy()); }
ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(CompensationModels.DOUBLE_SUBPROCESS_MODEL) .addSubProcessTo("innerSubProcess") .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess()
@Test public void testMigrateProcessInstanceWithEventSubProcess() { BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .addSubProcessTo(ProcessModels.PROCESS_KEY) .id("eventSubProcess") .triggerByEvent() .embeddedSubProcess() .startEvent("eventSubProcessStart").message(MESSAGE_NAME) .endEvent() .subProcessDone() .done(); assertGeneratedMigrationPlan(testProcess, testProcess) .hasInstructions( migrate("eventSubProcess").to("eventSubProcess"), migrate("eventSubProcessStart").to("eventSubProcessStart"), migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(testProcess, ProcessModels.ONE_TASK_PROCESS) .hasInstructions( migrate("userTask").to("userTask") ); assertGeneratedMigrationPlan(ProcessModels.ONE_TASK_PROCESS, testProcess) .hasInstructions( migrate("userTask").to("userTask") ); }