@Test public void testCannotMigrateWhenNotAllTransitionInstancesAreMapped() { // given BpmnModelInstance model = ModifiableBpmnModelInstance.modify(ProcessModels.PARALLEL_GATEWAY_PROCESS) .activityBuilder("userTask1") .camundaAsyncBefore() .moveToActivity("userTask2") .camundaAsyncBefore() .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(model); MigrationPlan migrationPlan = rule.getRuntimeService().createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask1", "userTask1") .build(); // when try { testHelper.createProcessInstanceAndMigrate(migrationPlan); Assert.fail("should not succeed because the userTask2 instance is not mapped"); } catch (MigratingProcessInstanceValidationException e) { assertThat(e.getValidationReport()) .hasTransitionInstanceFailures("userTask2", "There is no migration instruction for this instance's activity"); } }
@Test public void testCannotMigrateUnmappedTransitionInstanceAtNonLeafActivity() { // given BpmnModelInstance model = modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaAsyncBefore(true) .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(model); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .build(); // when try { testHelper.createProcessInstanceAndMigrate(migrationPlan); Assert.fail("should fail"); } catch (MigratingProcessInstanceValidationException e) { // then assertThat(e.getValidationReport()) .hasTransitionInstanceFailures("subProcess", "There is no migration instruction for this instance's activity" ); } }
@Test public void testAddScopeDoesNotBecomeAsync() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaAsyncBefore() .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then the async flag for the subprocess was not relevant for instantiation testHelper.assertActivityTreeAfterMigration().hasStructure( describeActivityInstanceTree(targetProcessDefinition.getId()) .beginScope("subProcess") .activity("userTask", testHelper.getSingleActivityInstanceBeforeMigration("userTask").getId()) .done()); Assert.assertEquals(0, testHelper.snapshotAfterMigration.getJobs().size()); }
@Test public void testCannotMigrateWhenNotAllTransitionInstancesAreMapped() { // given BpmnModelInstance model = ModifiableBpmnModelInstance.modify(ProcessModels.PARALLEL_GATEWAY_PROCESS) .activityBuilder("userTask1") .camundaAsyncBefore() .moveToActivity("userTask2") .camundaAsyncBefore() .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(model); MigrationPlan migrationPlan = rule.getRuntimeService().createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask1", "userTask1") .build(); // when try { testHelper.createProcessInstanceAndMigrate(migrationPlan); Assert.fail("should not succeed because the userTask2 instance is not mapped"); } catch (MigratingProcessInstanceValidationException e) { assertThat(e.getValidationReport()) .hasTransitionInstanceFailures("userTask2", "There is no migration instruction for this instance's activity"); } }
@Test public void testAddScopeDoesNotBecomeAsync() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaAsyncBefore() .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then the async flag for the subprocess was not relevant for instantiation testHelper.assertActivityTreeAfterMigration().hasStructure( describeActivityInstanceTree(targetProcessDefinition.getId()) .beginScope("subProcess") .activity("userTask", testHelper.getSingleActivityInstanceBeforeMigration("userTask").getId()) .done()); Assert.assertEquals(0, testHelper.snapshotAfterMigration.getJobs().size()); }
@Test public void testCannotMigrateUnmappedTransitionInstanceAtNonLeafActivity() { // given BpmnModelInstance model = modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaAsyncBefore(true) .done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(model); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .build(); // when try { testHelper.createProcessInstanceAndMigrate(migrationPlan); Assert.fail("should fail"); } catch (MigratingProcessInstanceValidationException e) { // then assertThat(e.getValidationReport()) .hasTransitionInstanceFailures("subProcess", "There is no migration instruction for this instance's activity" ); } }