public virtual void testCannotRemoveScopeAndMoveToConcurrentActivity() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelGatewaySubprocessProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelTaskAndSubprocessProcess); // when try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess", "subProcess") .MapActivities("userTask1", "userTask1") .MapActivities("userTask2", "userTask2") .Build(); Assert.Fail("should not validate"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask2", "The closest mapped ancestor 'subProcess' is mapped to scope 'subProcess' which is not an ancestor of target scope 'userTask2'"); } }
public virtual void testCannotMigrateHorizontallyBetweenScopes() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelSubprocessProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelSubprocessProcess); // when try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess1", "subProcess1") .MapActivities("subProcess2", "subProcess2") .MapActivities("userTask1", "userTask2") .MapActivities("userTask2", "userTask1") .Build(); Assert.Fail("should Assert.Fail"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask1", "The closest mapped ancestor 'subProcess1' is mapped to scope 'subProcess1' which is not an ancestor of target scope 'userTask2'") .HasInstructionFailures("userTask2", "The closest mapped ancestor 'subProcess2' is mapped to scope 'subProcess2' which is not an ancestor of target scope 'userTask1'"); } }
public virtual void testCannotRemoveParentScopeAndMoveOutOfGrandParentScope() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.TripleSubprocessProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.TripleSubprocessProcess); // when try { // subProcess2 is not migrated // subProcess 3 is moved out of the subProcess1 scope (by becoming a subProcess1 itself) rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess1", "subProcess1") .MapActivities("subProcess3", "subProcess1") .MapActivities("userTask", "userTask") .Build(); Assert.Fail("should not validate"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("subProcess3", "The closest mapped ancestor 'subProcess1' is mapped to scope 'subProcess1' which is not an ancestor of target scope 'subProcess1'"); } }
public virtual void testMigrateEventSubprocessChangeStartEventType() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(EventSubProcessModels.SIGNAL_EVENT_SUBPROCESS_PROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(EventSubProcessModels.TIMER_EVENT_SUBPROCESS_PROCESS); try { // when rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities(USER_TASK_ID, USER_TASK_ID) .MapActivities(EVENT_SUB_PROCESS_START_ID, EVENT_SUB_PROCESS_START_ID) .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures(EVENT_SUB_PROCESS_START_ID, "Events are not of the same type (signalStartEvent != startTimerEvent)"); } }
public virtual void testMapEqualActivitiesWithParallelMultiInstance() { // given IBpmnModelInstance testProcess = ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess) //.GetBuilderForElementById("userTask", typeof(UserTaskBuilder)) //.MultiInstance() //.Parallel() //.Cardinality("3") //.MultiInstanceDone() //.Done() ; var sourceProcessDefinition = testHelper.DeployAndGetDefinition(testProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(testProcess); // when try { runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("userTask", "userTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Target activity 'userTask' is a descendant of multi-instance body 'userTask#multiInstanceBody' " + "that is not mapped from the source process definition."); } }
public virtual void testMapBoundaryToChildActivity() { IBpmnModelInstance sourceProcess = ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess) //.ActivityBuilder("subProcess") //.BoundaryEvent("boundary") ////.Message(MESSAGE_NAME) //.Done() ; IBpmnModelInstance targetProcess = ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess) //.ActivityBuilder("userTask") //.BoundaryEvent("boundary") ////.Message(MESSAGE_NAME) //.Done() ; var sourceProcessDefinition = testHelper.DeployAndGetDefinition(sourceProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(targetProcess); try { runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess", "subProcess") .MapActivities("userTask", "userTask") .MapActivities("boundary", "boundary") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("boundary", "The source activity's event scope (subProcess) must be mapped to the target activity's event scope (userTask)"); } }
public virtual void testNotMigrateBoundaryEventsOfDifferentType() { var sourceDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess //.ActivityBuilder("userTask") //.BoundaryEvent("boundary") ////.Message(MESSAGE_NAME) //.Done() )); var targetDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess) //.ActivityBuilder("userTask") //.BoundaryEvent("boundary") //.Signal(SIGNAL_NAME) //.Done() ); try { runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id) .MapActivities("userTask", "userTask") .MapActivities("boundary", "boundary") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("boundary", "Events are not of the same type (boundaryMessage != boundarySignal)"); } }
public virtual void testMigrateSubProcessToProcessDefinition() { var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.SubprocessProcess); var targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); try { runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id) .MapActivities("subProcess", targetDefinition.Id) .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("subProcess", "Target activity '" + targetDefinition.Id + "' does not exist"); } }
/// <summary> /// Remove when implementing CAM-5407 /// </summary> //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testCannotRemoveScopeAndMoveToConcurrentActivity() public virtual void testCannotRemoveScopeAndMoveToConcurrentActivity() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_GATEWAY_SUBPROCESS_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_TASK_AND_SUBPROCESS_PROCESS); // when try { rule.RuntimeService.createMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id).mapActivities("subProcess", "subProcess").mapActivities("userTask1", "userTask1").mapActivities("userTask2", "userTask2").build(); Assert.fail("should not validate"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.assertThat(e.ValidationReport).hasInstructionFailures("userTask2", "The closest mapped ancestor 'subProcess' is mapped to scope 'subProcess' which is not an ancestor of target scope 'userTask2'"); } }
public virtual void testMigrateNullTargetActivityId() { var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); var targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); try { runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id) .MapActivities("userTask", null) .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Target activity id is null"); } }
public virtual void testMigrateToUnsupportedActivityType() { var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); var targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneReceiveTaskProcess); try { runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id) .MapActivities("userTask", "receiveTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Activities have incompatible types (UserTaskActivityBehavior is not compatible with ReceiveTaskActivityBehavior)"); } }
public virtual void testCannotUpdateEventTriggerForNonEvent() { var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); try { runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("userTask", "userTask") .UpdateEventTrigger() .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Cannot update event trigger because the activity does not define a persistent event trigger"); } }
public virtual void testCannotRemoveParentScope() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW_IN_SUBPROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("join", "join") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("join", "The gateway's flow scope 'subProcess' must be mapped"); } }
public virtual void testNotMapActivitiesMoreThanOnce() { var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelGatewayProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.ParallelGatewayProcess); try { runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("userTask1", "userTask1") .MapActivities("userTask1", "userTask2") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask1", "There are multiple mappings for source activity id 'userTask1'", "There are multiple mappings for source activity id 'userTask1'"); } }
public virtual void testCannotMapMultipleGatewaysToOne() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW); var targetProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("join", "join") .MapActivities("fork", "join") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("join", "Only one gateway can be mapped to gateway 'join'"); } }
public virtual void testAddMultiInstanceBody() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.PAR_MI_ONE_TASK_PROCESS); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("userTask", "userTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Target activity 'userTask' is a descendant of multi-instance body 'userTask#multiInstanceBody' " + "that is not mapped from the source process definition"); } }
public virtual void testNotMigrateActivitiesOfDifferentType() { var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess); var targetDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess) .SwapElementIds("userTask", "subProcess")); try { runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id) .MapActivities("userTask", "userTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("userTask", "Activities have incompatible types (UserTaskActivityBehavior is not " + "compatible with SubProcessActivityBehavior)"); } }
public virtual void cannotMigrateFromExternalToClassDelegateServiceTask() { var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ServiceTaskModels.oneClassDelegateServiceTask("foo.Bar")); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("externalTask", "serviceTask") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("externalTask", "Activities have incompatible types (ExternalTaskActivityBehavior is not compatible with" + " ClassDelegateActivityBehavior)"); } }
public virtual void testCannotMigrateInclusiveToParallelGateway() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.INCLUSIVE_GW); var targetProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("join", "join") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("join", "Activities have incompatible types " + "(InclusiveGatewayActivityBehavior is not compatible with ParallelGatewayActivityBehavior)"); } }
public virtual void testCannotAddScopeOnTopOfEventSubProcess() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(CompensationModels.COMPENSATION_EVENT_SUBPROCESS_MODEL); var targetProcessDefinition = testHelper.DeployAndGetDefinition( ModifiableBpmnModelInstance.Modify(CompensationModels.DOUBLE_SUBPROCESS_MODEL) .AddSubProcessTo("innerSubProcess") //.Id("eventSubProcess") .TriggerByEvent() //.EmbeddedSubProcess() //.StartEvent("eventSubProcessStart") //.CompensateEventDefinition() //.CompensateEventDefinitionDone() .EndEvent() .Done()); try { // when rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("subProcess", "outerSubProcess") .MapActivities("eventSubProcessStart", "eventSubProcessStart") .MapActivities("compensationBoundary", "compensationBoundary") .MapActivities("userTask2", "userTask2") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("eventSubProcessStart", "The source activity's event scope (subProcess) must be mapped to the target activity's event scope (innerSubProcess)"); } }
public virtual void testMigrateSequentialMiBodyAddSubprocess() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.SEQ_MI_ONE_TASK_PROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.SEQ_MI_SUBPROCESS_PROCESS); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities(miBodyOf("userTask"), miBodyOf("subProcess")) .MapActivities("userTask", "userTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures(miBodyOf("userTask"), "Must map the inner activity of a multi-instance body when the body is mapped"); } }
public virtual void testCannotRemoveGatewayIncomingSequenceFlow() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(GatewayModels.PARALLEL_GW); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(GatewayModels.PARALLEL_GW) .RemoveFlowNode("parallel2")); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("join", "join") .Build(); Assert.Fail("exception expected"); } catch (MigrationPlanValidationException e) { // then MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("join", "The target gateway must have at least the same number of incoming sequence flows that the source gateway has"); } }
public virtual void testCannotFlipAncestorScopes() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.DoubleSubprocessProcess); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.DoubleSubprocessProcess); // when try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("outerSubProcess", "innerSubProcess") .MapActivities("innerSubProcess", "outerSubProcess") .MapActivities("userTask", "userTask") .Build(); Assert.Fail("should not validate"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures("innerSubProcess", "The closest mapped ancestor 'outerSubProcess' is mapped to scope 'innerSubProcess' which is not an ancestor of target scope 'outerSubProcess'"); } }
public virtual void testMigrateParallelToSequential() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.PAR_MI_ONE_TASK_PROCESS); var targetProcessDefinition = testHelper.DeployAndGetDefinition(MultiInstanceProcessModels.SEQ_MI_ONE_TASK_PROCESS); try { rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities(miBodyOf("userTask"), miBodyOf("userTask")) .MapActivities("userTask", "userTask") .Build(); Assert.Fail("Should not succeed"); } catch (MigrationPlanValidationException e) { MigrationPlanValidationReportAssert.That(e.ValidationReport) .HasInstructionFailures(miBodyOf("userTask"), "Activities have incompatible types (ParallelMultiInstanceActivityBehavior is not " + "compatible with SequentialMultiInstanceActivityBehavior)"); } }