@Test public void testMigrateNonExistingSourceDefinition() { ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan("aNonExistingProcDefId", processDefinition.getId()) .mapActivities("userTask", "userTask") .build(); fail("Should not succeed"); } catch (BadUserRequestException e) { assertExceptionMessage(e, "Source process definition with id 'aNonExistingProcDefId' does not exist"); } }
public MigrationPlanDto generateMigrationPlan(MigrationPlanGenerationDto generationDto) { RuntimeService runtimeService = processEngine.getRuntimeService(); String sourceProcessDefinitionId = generationDto.getSourceProcessDefinitionId(); String targetProcessDefinitionId = generationDto.getTargetProcessDefinitionId(); try { MigrationInstructionsBuilder instructionsBuilder = runtimeService.createMigrationPlan(sourceProcessDefinitionId, targetProcessDefinitionId) .mapEqualActivities(); if (generationDto.isUpdateEventTriggers()) { instructionsBuilder = instructionsBuilder.updateEventTriggers(); } MigrationPlan migrationPlan = instructionsBuilder.build(); return MigrationPlanDto.from(migrationPlan); } catch (BadUserRequestException e) { throw new InvalidRequestException(Status.BAD_REQUEST, e, e.getMessage()); } }
public static MigrationPlan toMigrationPlan(ProcessEngine processEngine, MigrationPlanDto migrationPlanDto) { MigrationPlanBuilder migrationPlanBuilder = processEngine.getRuntimeService().createMigrationPlan(migrationPlanDto.getSourceProcessDefinitionId(), migrationPlanDto.getTargetProcessDefinitionId()); if (migrationPlanDto.getInstructions() != null) { for (MigrationInstructionDto migrationInstructionDto : migrationPlanDto.getInstructions()) { MigrationInstructionBuilder migrationInstructionBuilder = migrationPlanBuilder.mapActivities(migrationInstructionDto.getSourceActivityIds().get(0), migrationInstructionDto.getTargetActivityIds().get(0)); if (Boolean.TRUE.equals(migrationInstructionDto.isUpdateEventTrigger())) { migrationInstructionBuilder = migrationInstructionBuilder.updateEventTrigger(); } migrationPlanBuilder = migrationInstructionBuilder; } } return migrationPlanBuilder.build(); }
protected void verifyGenerateMigrationPlanInteraction(MigrationPlanBuilder migrationPlanBuilderMock, Map<String, Object> initialMigrationPlan) { verify(runtimeServiceMock).createMigrationPlan(eq(initialMigrationPlan.get(MigrationPlanDtoBuilder.PROP_SOURCE_PROCESS_DEFINITION_ID).toString()), eq(initialMigrationPlan.get(MigrationPlanDtoBuilder.PROP_TARGET_PROCESS_DEFINITION_ID).toString())); // the map equal activities method should be called verify(migrationPlanBuilderMock).mapEqualActivities(); // other instructions are ignored verify(migrationPlanBuilderMock, never()).mapActivities(anyString(), anyString()); }
@Before public void deployProcessesAndCreateMigrationPlan() { ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); migrationPlan = engineRule .getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .build(); }
@Before public void deployProcessesAndCreateMigrationPlan() { ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); migrationPlan = engineRule .getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .build(); }
@Test public void testMigrateNonExistingTargetDefinition() { ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan(processDefinition.getId(), "aNonExistingProcDefId") .mapActivities("userTask", "userTask") .build(); fail("Should not succeed"); } catch (BadUserRequestException e) { assertExceptionMessage(e, "Target process definition with id 'aNonExistingProcDefId' does not exist"); } }
@Test @Deployment(resources = {"org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithoutIdTest.bpmn"}) public void testProcessDefinitionWithoutIdField() { // given ProcessDefinition sourceProcessDefinition = testHelper.deploy("org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithoutIdTest.bpmn").getDeployedProcessDefinitions().get(0); ProcessDefinition targetProcessDefinition = testHelper.deploy("org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithoutIdTest.bpmn").getDeployedProcessDefinitions().get(0); //external task is not mapped to new external task MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapEqualActivities() .build(); List<MigrationInstruction> instructions = migrationPlan.getInstructions(); // test that the messageEventDefinition without an id isn't included assertEquals(2, instructions.size()); }
public static MigrationPlan toMigrationPlan(ProcessEngine processEngine, MigrationPlanDto migrationPlanDto) { MigrationPlanBuilder migrationPlanBuilder = processEngine.getRuntimeService().createMigrationPlan(migrationPlanDto.getSourceProcessDefinitionId(), migrationPlanDto.getTargetProcessDefinitionId()); if (migrationPlanDto.getInstructions() != null) { for (MigrationInstructionDto migrationInstructionDto : migrationPlanDto.getInstructions()) { MigrationInstructionBuilder migrationInstructionBuilder = migrationPlanBuilder.mapActivities(migrationInstructionDto.getSourceActivityIds().get(0), migrationInstructionDto.getTargetActivityIds().get(0)); if (Boolean.TRUE.equals(migrationInstructionDto.isUpdateEventTrigger())) { migrationInstructionBuilder = migrationInstructionBuilder.updateEventTrigger(); } migrationPlanBuilder = migrationInstructionBuilder; } } return migrationPlanBuilder.build(); }
@Before public void deployProcessesAndCreateMigrationPlan() { ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); migrationPlan = engineRule .getRuntimeService() .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .build(); }
@Test public void testMigrateNullTargetDefinition() { ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan(processDefinition.getId(), null) .mapActivities("userTask", "userTask") .build(); fail("Should not succeed"); } catch (BadUserRequestException e) { assertExceptionMessage(e, "Target process definition id is null"); } }
@Test @Deployment(resources = {"org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithoutIdTest.bpmn"}) public void testProcessDefinitionWithIdField() { // given ProcessDefinition sourceProcessDefinition = testHelper.deploy("org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithIdTest.bpmn").getDeployedProcessDefinitions().get(0); ProcessDefinition targetProcessDefinition = testHelper.deploy("org/camunda/bpm/engine/test/api/externaltask/ExternalTaskWithIdTest.bpmn").getDeployedProcessDefinitions().get(0); //external task is not mapped to new external task MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapEqualActivities() .build(); List<MigrationInstruction> instructions = migrationPlan.getInstructions(); assertEquals(2, instructions.size()); }
@Test public void testMigrateNullSourceDefinition() { ProcessDefinition processDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan(null, processDefinition.getId()) .mapActivities("userTask", "userTask") .build(); fail("Should not succeed"); } catch (BadUserRequestException e) { assertExceptionMessage(e, "Source process definition id is null"); } }
@Test public void testProcessInstanceIdsListWithNullValue() { ProcessDefinition testProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = runtimeService.createMigrationPlan(testProcessDefinition.getId(), testProcessDefinition.getId()) .mapEqualActivities() .build(); try { runtimeService.newMigration(migrationPlan).processInstanceIds(Arrays.asList("foo", null, "bar")).executeAsync(); fail("Should not succeed"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), containsString("process instance ids contains null value")); } }
@Test public void testMigrateConditionalEventWithoutUpdateTrigger() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ONE_CONDITION_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ONE_CONDITION_PROCESS); //expect migration validation exception exceptionRule.expect(MigrationPlanValidationException.class); exceptionRule.expectMessage(MIGRATION_CONDITIONAL_VALIDATION_ERROR_MSG); //when conditional event is migrated without update event trigger rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities(CONDITION_ID, CONDITION_ID) .build(); }
public Batch migrateProcessInstancesAsync(int numberOfProcessInstances, ProcessDefinition sourceProcessDefinition, ProcessDefinition targetProcessDefinition) { RuntimeService runtimeService = engineRule.getRuntimeService(); List<String> processInstanceIds = new ArrayList<String>(numberOfProcessInstances); for (int i = 0; i < numberOfProcessInstances; i++) { processInstanceIds.add( runtimeService.startProcessInstanceById(sourceProcessDefinition.getId()).getId()); } MigrationPlan migrationPlan = engineRule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapEqualActivities() .build(); return runtimeService.newMigration(migrationPlan).processInstanceIds(processInstanceIds).executeAsync(); }
@Test public void testMigrateNullSourceActivityId() { ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities(null, "userTask") .build(); fail("Should not succeed"); } catch (MigrationPlanValidationException e) { assertThat(e.getValidationReport()) .hasInstructionFailures(null, "Source activity id is null"); } }
@Test public void testEmptyProcessInstanceIdsList() { ProcessDefinition testProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = runtimeService.createMigrationPlan(testProcessDefinition.getId(), testProcessDefinition.getId()) .mapEqualActivities() .build(); try { runtimeService.newMigration(migrationPlan).processInstanceIds(Collections.<String>emptyList()).executeAsync(); fail("Should not succeed"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), containsString("process instance ids is empty")); } }
@Test public void testMigrateNullTargetActivityId() { ProcessDefinition sourceDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); try { runtimeService .createMigrationPlan(sourceDefinition.getId(), targetDefinition.getId()) .mapActivities("userTask", null) .build(); fail("Should not succeed"); } catch (MigrationPlanValidationException e) { assertThat(e.getValidationReport()) .hasInstructionFailures("userTask", "Target activity id is null"); } }
@Test public void testProcessInstanceIdsListWithNullValue() { ProcessDefinition testProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = runtimeService.createMigrationPlan(testProcessDefinition.getId(), testProcessDefinition.getId()) .mapEqualActivities() .build(); try { runtimeService.newMigration(migrationPlan).processInstanceIds(Arrays.asList("foo", null, "bar")).execute(); fail("Should not be able to migrate"); } catch (ProcessEngineException e) { assertThat(e.getMessage(), CoreMatchers.containsString("process instance ids contains null value")); } }