public virtual void testMigrateBoundaryEventToParallelSubProcess() { // given var sourceProcess = ProcessModels.ParallelSubprocessProcess.Clone(); var eventTrigger = eventFactory.AddBoundaryEvent(rule.ProcessEngine, sourceProcess, "subProcess1", BOUNDARY_ID); ModifiableBpmnModelInstance.Wrap(sourceProcess) //.FlowNodeBuilder(BOUNDARY_ID) //.UserTask(AFTER_BOUNDARY_TASK) //.EndEvent() //.Done() ; IBpmnModelInstance targetProcess = ModifiableBpmnModelInstance.Modify(sourceProcess) .ChangeElementId(BOUNDARY_ID, NEW_BOUNDARY_ID); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(sourceProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(targetProcess); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess1", "subProcess1") .MapActivities(USER_TASK_1_ID, USER_TASK_1_ID) .MapActivities("subProcess2", "subProcess2") .MapActivities(USER_TASK_2_ID, USER_TASK_2_ID) .MapActivities(BOUNDARY_ID, NEW_BOUNDARY_ID) .UpdateEventTrigger() .Build(); // when testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then eventTrigger.AssertEventTriggerMigrated(testHelper, NEW_BOUNDARY_ID); // and it is possible to successfully complete the migrated instance testHelper.CompleteTask(USER_TASK_1_ID); testHelper.CompleteTask(USER_TASK_2_ID); testHelper.AssertProcessEnded(testHelper.SnapshotBeforeMigration.ProcessInstanceId); }
public virtual void testMigrateEventSubprocessSignalTrigger() { var processModel = ProcessModels.OneTaskProcess.Clone(); var eventTrigger = eventFactory.AddEventSubProcess(rule.ProcessEngine, processModel, ProcessModels.ProcessKey, "eventSubProcess", "eventSubProcessStart"); ModifiableBpmnModelInstance.Wrap(processModel) .StartEventBuilder("eventSubProcessStart") .UserTask("eventSubProcessTask") .EndEvent() .Done(); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(processModel); var targetProcessDefinition = testHelper.DeployAndGetDefinition(processModel); var processInstance = rule.RuntimeService.StartProcessInstanceById(sourceProcessDefinition.Id); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("userTask", "userTask") .MapActivities("eventSubProcessStart", "eventSubProcessStart") .UpdateEventTrigger() .Build(); // when testHelper.MigrateProcessInstance(migrationPlan, processInstance); // then eventTrigger.AssertEventTriggerMigrated(testHelper, "eventSubProcessStart"); // and it is possible to trigger the event subprocess eventTrigger.Trigger(processInstance.Id); Assert.AreEqual(1, rule.TaskService.CreateTaskQuery() .Count()); // and complete the process instance testHelper.CompleteTask("eventSubProcessTask"); testHelper.AssertProcessEnded(processInstance.Id); }
public virtual void testMigrateBoundaryEventOnConcurrentScopeUserTaskAndTriggerEvent() { // given var sourceProcess = ProcessModels.ScopeTaskProcess.Clone(); var eventTrigger = eventFactory.AddBoundaryEvent(rule.ProcessEngine, sourceProcess, USER_TASK_1_ID, BOUNDARY_ID); ModifiableBpmnModelInstance.Wrap(sourceProcess) //.FlowNodeBuilder(BOUNDARY_ID) //.UserTask(AFTER_BOUNDARY_TASK) //.EndEvent() //.Done() ; IBpmnModelInstance targetProcess = ModifiableBpmnModelInstance.Modify(sourceProcess) .ChangeElementId("boundary", "newBoundary"); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(sourceProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(targetProcess); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities(USER_TASK_1_ID, USER_TASK_1_ID) .MapActivities(USER_TASK_2_ID, USER_TASK_2_ID) .MapActivities(BOUNDARY_ID, NEW_BOUNDARY_ID) .UpdateEventTrigger() .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then it is possible to trigger the event and successfully complete the migrated instance eventTrigger.InContextOf(NEW_BOUNDARY_ID) .Trigger(processInstance.Id); testHelper.CompleteTask(AFTER_BOUNDARY_TASK); testHelper.CompleteTask(USER_TASK_2_ID); testHelper.AssertProcessEnded(testHelper.SnapshotBeforeMigration.ProcessInstanceId); }
public virtual void testMigrateActiveCompensationEventSubProcess() { // given var processModel = ProcessModels.OneTaskProcess.Clone(); var eventTrigger = eventFactory.AddEventSubProcess(rule.ProcessEngine, processModel, ProcessModels.ProcessKey, "eventSubProcess", "eventSubProcessStart"); ModifiableBpmnModelInstance.Wrap(processModel) .StartEventBuilder("eventSubProcessStart") .UserTask("eventSubProcessTask") .EndEvent() .Done(); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(processModel); var targetProcessDefinition = testHelper.DeployAndGetDefinition(processModel); IProcessInstance processInstance = rule.RuntimeService.CreateProcessInstanceById(sourceProcessDefinition.Id) .StartBeforeActivity("eventSubProcessStart") .ExecuteWithVariablesInReturn(); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("eventSubProcess", "eventSubProcess") .MapActivities("eventSubProcessStart", "eventSubProcessStart") .UpdateEventTrigger() .MapActivities("eventSubProcessTask", "eventSubProcessTask") .Build(); // when testHelper.MigrateProcessInstance(migrationPlan, processInstance); // then eventTrigger.AssertEventTriggerMigrated(testHelper, "eventSubProcessStart"); // and it is possible to complete the process instance testHelper.CompleteTask("eventSubProcessTask"); testHelper.AssertProcessEnded(processInstance.Id); }