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); }
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); }