.camundaInputParameter("localVar", "${loopVar}") .camundaInputParameter("constVar", "someValue") //to test array of parameters .done();
.activityBuilder("subProcess") .camundaInputParameter("foo", "subProcessValue") .done());
@Test public void testMapEqualActivitiesWithParallelMultiInstance() { BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .<UserTask>getModelElementById("userTask").builder() .multiInstance().parallel().cardinality("3").multiInstanceDone().done(); assertGeneratedMigrationPlan(testProcess, testProcess) .hasInstructions( migrate("userTask").to("userTask"), migrate("userTask#multiInstanceBody").to("userTask#multiInstanceBody")); }
@Test public void testSkipIoMappingInvocation() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(modify(instance) .activityBuilder("user2") .camundaInputParameter("foo", "bar") .done()); ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId()); Batch batch = runtimeService .createModification(processDefinition.getId()) .startBeforeActivity("user2") .processInstanceIds(Arrays.asList(processInstance.getId())) .skipIoMappings() .executeAsync(); helper.executeSeedJob(batch); // when helper.executeJobs(batch); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
@Ignore("CAM-6035") @Test public void testNoInputMappingExecuted() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(CompensationModels.ONE_COMPENSATION_TASK_MODEL); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(CompensationModels.COMPENSATION_ONE_TASK_SUBPROCESS_MODEL) .activityBuilder("subProcess") .camundaInputParameter("foo", "bar") .done()); MigrationPlan migrationPlan = rule.getRuntimeService().createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask2", "userTask2") .mapActivities("compensationBoundary", "compensationBoundary") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); testHelper.completeTask("userTask1"); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then Assert.assertEquals(0, testHelper.snapshotAfterMigration.getVariables().size()); }
ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition( modify(ProcessModels.PARALLEL_GATEWAY_SUBPROCESS_PROCESS) .activityBuilder("subProcess").camundaInputParameter("foo", "inputOutputValue").done() );
@Test public void testSkipIoMappingInvocationForRemovedScope() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaOutputParameter("foo", "bar") .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when ProcessInstance processInstance = rule.getRuntimeService() .startProcessInstanceById(migrationPlan.getSourceProcessDefinitionId()); rule.getRuntimeService() .newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .skipIoMappings() .execute(); // then assertEquals(0, rule.getRuntimeService().createVariableInstanceQuery().count()); }
@Test public void testSkipIoMappingInvocationForNewlyCreatedScope() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaInputParameter("foo", "bar") .done() ); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when ProcessInstance processInstance = rule.getRuntimeService() .startProcessInstanceById(migrationPlan.getSourceProcessDefinitionId()); rule.getRuntimeService() .newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .skipIoMappings() .execute(); // then assertEquals(0, rule.getRuntimeService().createVariableInstanceQuery().count()); }
@Test public void testMapEqualActivitiesWithParallelMultiInstance() { // given BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .getBuilderForElementById("userTask", UserTaskBuilder.class) .multiInstance().parallel().cardinality("3").multiInstanceDone().done(); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(testProcess); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(testProcess); // when try { runtimeService .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); fail("Should not succeed"); } catch (MigrationPlanValidationException e) { assertThat(e.getValidationReport()) .hasInstructionFailures("userTask", "Target activity 'userTask' is a descendant of multi-instance body 'userTask#multiInstanceBody' " + "that is not mapped from the source process definition." ); } }
@Test public void testSkipIoMappingInvocationForNewlyCreatedScope() { // given ProcessDefinition sourceProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = migrationRule.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaInputParameter("foo", "bar") .done() ); MigrationPlan migrationPlan = engineRule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); Batch batch = engineRule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .skipIoMappings() .executeAsync(); helper.executeSeedJob(batch); // when helper.executeJobs(batch); // then assertEquals(0, engineRule.getRuntimeService().createVariableInstanceQuery().count()); }
@Test public void testIoMappingInvocation() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(modify(instance) .activityBuilder("user1") .camundaInputParameter("foo", "bar") .done() ); ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId()); Batch batch = runtimeService .createModification(processDefinition.getId()) .startAfterActivity("user2") .processInstanceIds(Arrays.asList(processInstance.getId())) .executeAsync(); helper.executeSeedJob(batch); // when helper.executeJobs(batch); // then VariableInstance inputVariable = runtimeService.createVariableInstanceQuery().singleResult(); Assert.assertNotNull(inputVariable); assertEquals("foo", inputVariable.getName()); assertEquals("bar", inputVariable.getValue()); ActivityInstance activityInstance = runtimeService.getActivityInstance(processInstance.getId()); assertEquals(activityInstance.getActivityInstances("user1")[0].getId(), inputVariable.getActivityInstanceId()); }
@Test public void shouldSkipIoMappings() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition( modify(ProcessModels.TWO_TASKS_PROCESS).activityBuilder("userTask1").camundaInputParameter("foo", "bar").done()); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask1") .skipIoMappings() .processInstanceIds(processInstance.getId()) .execute(); // then Execution task1Execution = runtimeService.createExecutionQuery().activityId("userTask1").singleResult(); assertNotNull(task1Execution); assertNull(runtimeService.getVariable(task1Execution.getId(), "foo")); }
@Test public void testNoOutputMappingExecuted() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(CompensationModels.COMPENSATION_ONE_TASK_SUBPROCESS_MODEL) .activityBuilder("subProcess") .camundaOutputParameter("foo", "${bar}") .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(CompensationModels.ONE_COMPENSATION_TASK_MODEL); MigrationPlan migrationPlan = rule.getRuntimeService().createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask2", "userTask2") .mapActivities("compensationBoundary", "compensationBoundary") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); rule.getRuntimeService().setVariable(processInstance.getId(), "bar", "value1"); testHelper.completeTask("userTask1"); // => sets "foo" to "value1" rule.getRuntimeService().setVariable(processInstance.getId(), "bar", "value2"); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then "foo" has not been set to "value2" Assert.assertEquals(2, testHelper.snapshotAfterMigration.getVariables().size()); // "foo" and "bar" VariableInstance variableInstance = testHelper.snapshotAfterMigration.getSingleVariable("foo"); Assert.assertEquals("value1", variableInstance.getValue()); } }
@Test public void testIoMappingInvocationForRemovedScope() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaOutputParameter("foo", "bar") .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when ProcessInstance processInstance = rule.getRuntimeService() .startProcessInstanceById(migrationPlan.getSourceProcessDefinitionId()); rule.getRuntimeService() .newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then VariableInstance inputVariable = rule.getRuntimeService().createVariableInstanceQuery().singleResult(); Assert.assertNotNull(inputVariable); assertEquals("foo", inputVariable.getName()); assertEquals("bar", inputVariable.getValue()); assertEquals(processInstance.getId(), inputVariable.getActivityInstanceId()); }
@Test public void shouldSkipIoMappings() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition( modify(ProcessModels.TWO_TASKS_PROCESS).activityBuilder("userTask1").camundaInputParameter("foo", "bar").done()); ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("Process"); ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("Process"); runtimeService.deleteProcessInstance(processInstance1.getId(), "test"); runtimeService.deleteProcessInstance(processInstance2.getId(), "test"); // when Batch batch = runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask1") .skipIoMappings() .processInstanceIds(processInstance1.getId(), processInstance2.getId()) .executeAsync(); helper.completeBatch(batch); // then List<ProcessInstance> restartedProcessInstances = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.getId()).list(); Execution task1Execution = runtimeService.createExecutionQuery().processInstanceId(restartedProcessInstances.get(0).getId()).activityId("userTask1").singleResult(); assertNotNull(task1Execution); assertNull(runtimeService.getVariable(task1Execution.getId(), "foo")); task1Execution = runtimeService.createExecutionQuery().processInstanceId(restartedProcessInstances.get(1).getId()).activityId("userTask1").singleResult(); assertNotNull(task1Execution); assertNull(runtimeService.getVariable(task1Execution.getId(), "foo")); }
@Test public void testIoMappingInvocationForNewlyCreatedScope() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaInputParameter("foo", "bar") .done() ); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); // when ProcessInstance processInstance = rule.getRuntimeService() .startProcessInstanceById(migrationPlan.getSourceProcessDefinitionId()); rule.getRuntimeService() .newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .execute(); // then VariableInstance inputVariable = rule.getRuntimeService().createVariableInstanceQuery().singleResult(); Assert.assertNotNull(inputVariable); assertEquals("foo", inputVariable.getName()); assertEquals("bar", inputVariable.getValue()); ActivityInstance activityInstance = rule.getRuntimeService().getActivityInstance(processInstance.getId()); assertEquals(activityInstance.getActivityInstances("subProcess")[0].getId(), inputVariable.getActivityInstanceId()); }
@Test public void testIoMappingInvocationForNewlyCreatedScope() { // given ProcessDefinition sourceProcessDefinition = migrationRule.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); ProcessDefinition targetProcessDefinition = migrationRule.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS) .activityBuilder("subProcess") .camundaInputParameter("foo", "bar") .done() ); MigrationPlan migrationPlan = engineRule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("userTask", "userTask") .build(); ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); Batch batch = engineRule.getRuntimeService().newMigration(migrationPlan) .processInstanceIds(Arrays.asList(processInstance.getId())) .executeAsync(); helper.executeSeedJob(batch); // when helper.executeJobs(batch); // then VariableInstance inputVariable = engineRule.getRuntimeService().createVariableInstanceQuery().singleResult(); Assert.assertNotNull(inputVariable); assertEquals("foo", inputVariable.getName()); assertEquals("bar", inputVariable.getValue()); ActivityInstance activityInstance = engineRule.getRuntimeService().getActivityInstance(processInstance.getId()); assertEquals(activityInstance.getActivityInstances("subProcess")[0].getId(), inputVariable.getActivityInstanceId()); }
@Test public void testMapEqualActivitiesWithParallelMultiInstance() { BpmnModelInstance testProcess = modify(ProcessModels.ONE_TASK_PROCESS) .<UserTask>getModelElementById("userTask").builder() .multiInstance().parallel().cardinality("3").multiInstanceDone().done(); assertGeneratedMigrationPlan(testProcess, testProcess) .hasInstructions( migrate("userTask").to("userTask"), migrate("userTask#multiInstanceBody").to("userTask#multiInstanceBody")); }
@Test public void testSkipIoMappingInvocation() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition(modify(instance) .activityBuilder("user2") .camundaInputParameter("foo", "bar") .done()); ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId()); Batch batch = runtimeService .createModification(processDefinition.getId()) .startBeforeActivity("user2") .processInstanceIds(Arrays.asList(processInstance.getId())) .skipIoMappings() .executeAsync(); helper.executeSeedJob(batch); // when helper.executeJobs(batch); // then assertEquals(0, runtimeService.createVariableInstanceQuery().count()); }
@Test public void shouldSkipIoMappings() { // given ProcessDefinition processDefinition = testRule.deployAndGetDefinition( modify(ProcessModels.TWO_TASKS_PROCESS).activityBuilder("userTask1").camundaInputParameter("foo", "bar").done()); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); runtimeService.deleteProcessInstance(processInstance.getId(), "test"); // when runtimeService.restartProcessInstances(processDefinition.getId()) .startBeforeActivity("userTask1") .skipIoMappings() .processInstanceIds(processInstance.getId()) .execute(); // then Execution task1Execution = runtimeService.createExecutionQuery().activityId("userTask1").singleResult(); assertNotNull(task1Execution); assertNull(runtimeService.getVariable(task1Execution.getId(), "foo")); }