Exemple #1
0
        public virtual void testMigrateTransactionToEmbeddedSubProcess()
        {
            // given
            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(TransactionModels.ONE_TASK_TRANSACTION);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.SubprocessProcess);

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("transaction", "subProcess")
                .MapActivities("userTask", "userTask")
                .Build();

            // when
            var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan);

            // then
            Assert.AreEqual(testHelper.GetSingleActivityInstanceBeforeMigration("transaction")
                            .Id, testHelper.GetSingleActivityInstanceAfterMigration("subProcess")
                            .Id);

            testHelper.CompleteTask("userTask");
            testHelper.AssertProcessEnded(processInstance.Id);
        }
Exemple #2
0
        public virtual void testVariableAtConcurrentExecutionInScopeActivityAddParentScope()
        {
            // given
            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(CONCURRENT_BOUNDARY_TASKS);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(SUBPROCESS_CONCURRENT_BOUNDARY_TASKS);

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("userTask1", "userTask1")
                .MapActivities("userTask2", "userTask2")
                .Build();

            var processInstance = runtimeService.StartProcessInstanceById(sourceProcessDefinition.Id);

            var executionTreeBeforeMigration = ExecutionTree.ForExecution(processInstance.Id, rule.ProcessEngine);

            var userTask1CCExecutionBefore = executionTreeBeforeMigration.GetLeafExecutions("userTask1")[0].Parent;

            runtimeService.SetVariableLocal(userTask1CCExecutionBefore.Id, "foo", 42);

            // when
            testHelper.MigrateProcessInstance(migrationPlan, processInstance);

            // then
            var beforeMigration = testHelper.SnapshotBeforeMigration.GetSingleVariable("foo");

            var userTask1CCExecutionAfter =
                testHelper.SnapshotAfterMigration.ExecutionTree.GetLeafExecutions("userTask1")[0].Parent;

            Assert.AreEqual(1, testHelper.SnapshotAfterMigration.GetVariables()
                            .Count);
            var subProcessInstance = testHelper.GetSingleActivityInstanceAfterMigration("subProcess");

            // for variables at concurrent executions that are parent of a leaf-scope-execution, the activity instance is
            // the activity instance id of the parent activity instance (which is probably a bug)
            testHelper.AssertVariableMigratedToExecution(beforeMigration, userTask1CCExecutionAfter.Id,
                                                         subProcessInstance.Id);
        }