public virtual void testCallBpmnProcessReconfigureCallActivity() { // given var model = CallActivityModels.oneBpmnCallActivityProcess("oneTaskProcess"); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(model); var targetProcessDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(model) .CallActivityBuilder("callActivity") .CalledElement("foo") .Done()); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("callActivity", "callActivity") .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then the called instance has not changed (e.g. not been migrated to a different process definition) var calledInstance = rule.RuntimeService.CreateProcessInstanceQuery() ////.SetProcessDefinitionKey("oneTaskProcess") .First(); Assert.NotNull(calledInstance); // and it is possible to complete the called process instance testHelper.CompleteTask("userTask"); // and the calling process instance testHelper.CompleteTask("userTask"); testHelper.AssertProcessEnded(processInstance.Id); }
public virtual void testCallBpmnProcessParallelMultiInstance() { // given IBpmnModelInstance model = ModifiableBpmnModelInstance.Modify(CallActivityModels.oneBpmnCallActivityProcess("oneTaskProcess")) //.ActivityBuilder("callActivity") //.MultiInstance() //.Parallel() //.Cardinality("1") //.Done() ; var sourceProcessDefinition = testHelper.DeployAndGetDefinition(model); var targetProcessDefinition = testHelper.DeployAndGetDefinition(model); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("callActivity#multiInstanceBody", "callActivity#multiInstanceBody") .MapActivities("callActivity", "callActivity") .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then testHelper.AssertExecutionTreeAfterMigration() .HasProcessDefinitionId(targetProcessDefinition.Id) .Matches(ExecutionAssert.DescribeExecutionTree(null) .Scope() .Id(testHelper.SnapshotBeforeMigration.ProcessInstanceId) .Child(null) .Scope() .Id(testHelper.GetSingleExecutionIdForActivityBeforeMigration("callActivity#multiInstanceBody")) .Child("callActivity") .Concurrent() .NoScope() .Id(testHelper.GetSingleExecutionIdForActivityBeforeMigration("callActivity")) .Done()); testHelper.AssertActivityTreeAfterMigration() .HasStructure(ActivityInstanceAssert.DescribeActivityInstanceTree(targetProcessDefinition.Id) .BeginMiBody("callActivity") .Activity("callActivity", testHelper.GetSingleActivityInstanceBeforeMigration("callActivity") .Id) .Done()); // and the link between calling and called instance is maintained correctly testHelper.AssertSuperExecutionOfProcessInstance(rule.RuntimeService.CreateProcessInstanceQuery() ////.SetProcessDefinitionKey("oneTaskProcess") .First() .Id, testHelper.GetSingleExecutionIdForActivityAfterMigration("callActivity")); // and it is possible to complete the called process instance testHelper.CompleteTask("userTask"); // and the calling process instance testHelper.CompleteTask("userTask"); testHelper.AssertProcessEnded(processInstance.Id); }
protected internal virtual IList <IBpmnModelInstance> createSequentialCallActivityProcessAsync() { ICollection <IBpmnModelInstance> modelInstances = new LinkedList <IBpmnModelInstance>(); modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessAsExpressionAsync(0)); modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessPassingVariables(1, 2)); modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessPassingVariables(2, 0)); modelInstances.Add(ProcessModels.SetOneTaskProcess(3)); return(modelInstances as IList <IBpmnModelInstance>); }
public virtual void testCallCmmnCaseSimpleMigration() { // given var model = CallActivityModels.oneCmmnCallActivityProcess("oneTaskCase"); var sourceProcessDefinition = testHelper.DeployAndGetDefinition(model); var targetProcessDefinition = testHelper.DeployAndGetDefinition(model); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("callActivity", "callActivity") .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then testHelper.AssertExecutionTreeAfterMigration() .HasProcessDefinitionId(targetProcessDefinition.Id) .Matches(ExecutionAssert.DescribeExecutionTree(null) .Scope() .Id(testHelper.SnapshotBeforeMigration.ProcessInstanceId) .Child("callActivity") .Scope() .Id(testHelper.GetSingleExecutionIdForActivityBeforeMigration("callActivity")) .Done()); testHelper.AssertActivityTreeAfterMigration() .HasStructure(ActivityInstanceAssert.DescribeActivityInstanceTree(targetProcessDefinition.Id) .Activity("callActivity", testHelper.GetSingleActivityInstanceBeforeMigration("callActivity") .Id) .Done()); // and it is possible to complete the called case instance var caseExecution = rule.CaseService.CreateCaseExecutionQuery(c => c.ActivityId == "PI_HumanTask_1") .First(); testHelper.CompleteTask("PI_HumanTask_1"); // and the calling process instance testHelper.CompleteTask("userTask"); testHelper.AssertProcessEnded(processInstance.Id); // and close the called case instance rule.CaseService.WithCaseExecution(caseExecution.CaseInstanceId) .Close(); testHelper.AssertCaseEnded(caseExecution.CaseInstanceId); }
public virtual void testCallBpmnProcessAddParentScope() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition(CallActivityModels.oneBpmnCallActivityProcess("oneTaskProcess")); var targetProcessDefinition = testHelper.DeployAndGetDefinition(CallActivityModels.subProcessBpmnCallActivityProcess("oneTaskProcess")); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("callActivity", "callActivity") .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then testHelper.AssertExecutionTreeAfterMigration() .HasProcessDefinitionId(targetProcessDefinition.Id) .Matches(ExecutionAssert.DescribeExecutionTree(null) .Scope() .Id(testHelper.SnapshotBeforeMigration.ProcessInstanceId) .Child(null) .Scope() .Child("callActivity") .Scope() .Id(testHelper.GetSingleExecutionIdForActivityBeforeMigration("callActivity")) .Done()); testHelper.AssertActivityTreeAfterMigration() .HasStructure(ActivityInstanceAssert.DescribeActivityInstanceTree(targetProcessDefinition.Id) .BeginScope("subProcess") .Activity("callActivity", testHelper.GetSingleActivityInstanceBeforeMigration("callActivity") .Id) .Done()); // and it is possible to complete the called process instance testHelper.CompleteTask("userTask"); // and the calling process instance testHelper.CompleteTask("userTask"); testHelper.AssertProcessEnded(processInstance.Id); }
public virtual void testCallCmmnCaseSequentialMultiInstanceRemoveMiBody() { // given var sourceProcessDefinition = testHelper.DeployAndGetDefinition( ModifiableBpmnModelInstance.Modify(CallActivityModels.oneCmmnCallActivityProcess("oneTaskCase")) //.ActivityBuilder("callActivity") //.MultiInstance() //.Sequential() //.Cardinality("1") //.Done() ); var targetProcessDefinition = testHelper.DeployAndGetDefinition(CallActivityModels.oneCmmnCallActivityProcess("oneTaskCase")); var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id) .MapActivities("callActivity", "callActivity") .Build(); // when var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan); // then testHelper.AssertExecutionTreeAfterMigration() .HasProcessDefinitionId(targetProcessDefinition.Id) .Matches(ExecutionAssert.DescribeExecutionTree(null) .Scope() .Id(testHelper.SnapshotBeforeMigration.ProcessInstanceId) .Child("callActivity") .Scope() .Done()); testHelper.AssertActivityTreeAfterMigration() .HasStructure(ActivityInstanceAssert.DescribeActivityInstanceTree(targetProcessDefinition.Id) .Activity("callActivity", testHelper.GetSingleActivityInstanceBeforeMigration("callActivity") .Id) .Done()); // then the link between calling and called instance is maintained correctly testHelper.AssertSuperExecutionOfCaseInstance(rule.CaseService.CreateCaseInstanceQuery() //.CaseDefinitionKey("oneTaskCase") .First() .Id, testHelper.GetSingleExecutionIdForActivityAfterMigration("callActivity")); // and it is possible to complete the called case instance var caseExecution = rule.CaseService.CreateCaseExecutionQuery(c => c.ActivityId == "PI_HumanTask_1") .First(); testHelper.CompleteTask("PI_HumanTask_1"); // and the calling process instance testHelper.CompleteTask("userTask"); testHelper.AssertProcessEnded(processInstance.Id); // and close the called case instance rule.CaseService.WithCaseExecution(caseExecution.CaseInstanceId) .Close(); testHelper.AssertCaseEnded(caseExecution.CaseInstanceId); }