public void ChangeLeaderToApproverThenChangeToLeaderSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); WfRuntime.DecorateProcess(process); Console.WriteLine("没有秘书的"); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object); WfRuntime.DecorateProcess(process); Console.WriteLine("有秘书的"); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
public void CopyMainStreamActivitiesTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareCopyTestProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); process.Activities.FindActivityByDescriptorKey("B").CopyMainStreamActivities(process.InitialActivity, null, WfControlOperationType.Return); Assert.AreEqual(8, process.Activities.Count, "总共有8个活动"); IWfActivityDescriptor copiedA = process.Activities.FindActivityByDescriptorKey("B").Descriptor.ToTransitions.First().ToActivity; Assert.AreEqual("A", copiedA.AssociatedActivityKey); Assert.AreEqual(process.InitialActivity.Descriptor.ToTransitions.Count, copiedA.ToTransitions.Count, "复制出来的A和原始的A的出线个数相同"); IWfActivityDescriptor copiedE = copiedA.ToTransitions.Find(t => t.ToActivity.AssociatedActivityKey == "E").ToActivity; IWfActivityDescriptor copiedB = copiedA.ToTransitions.Find(t => t.ToActivity.AssociatedActivityKey == "B").ToActivity; Assert.IsTrue(copiedE.ToTransitions.First().ToActivity.Key == "C", "复制出的E指向C"); Assert.IsTrue(copiedB.ToTransitions.First().ToActivity.Key == "C", "复制出的B指向C"); IWfActivityDescriptor actDespE = process.Activities.FindActivityByDescriptorKey("E").Descriptor; Assert.IsTrue(actDespE.ToTransitions.First().ToActivity.Key == "C", "E指向C"); IWfActivityDescriptor actDespC = process.Activities.FindActivityByDescriptorKey("C").Descriptor; Assert.IsNotNull(actDespC.ToTransitions.First().ToActivity.Key == "D", "C指向D"); }
public void ClearThenResetInitialActivitySecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); processDesp.InitialActivity.Properties.SetValue("AutoAppendSecretary", true); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); ChangeActivityResource(process.Descriptor.InitialActivity, (IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object); WfRuntime.DecorateProcess(process); ChangeActivityResource(process.Descriptor.Activities["Initial"], (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); WfRuntime.DecorateProcess(process); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(3, processDesp.Activities.Count); Assert.AreEqual(process.InitialActivity.Descriptor.Key, process.Descriptor.InitialActivity.Key); Assert.AreEqual(WfActivityType.InitialActivity, process.Descriptor.InitialActivity.ActivityType); Assert.AreEqual(WfActivityType.InitialActivity, process.Descriptor.Activities["Initial"].ActivityType); Assert.AreEqual(3, process.MainStream.Activities.Count); Assert.AreEqual(WfActivityType.InitialActivity, process.MainStream.InitialActivity.ActivityType); }
public void AgreeReturnTwiceThenWithdrawTest() { IWfActivity activityB = ReturnExecutorTestHelper.PrepareAndMoveToAgreeSelectorActivity(); Assert.AreEqual("B", activityB.Descriptor.Key); SetToLineAndMSLineSelected(activityB, "C", false); SetToLineAndMSLineSelected(activityB, "A", true); Console.WriteLine("退回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); MoveAgreeProcessOneStepAndValidate(activityB.Process, 1); activityB.Process.MoveToNextDefaultActivity(); //To N2(B) Console.WriteLine("第二次退回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); Assert.AreEqual("N2", activityB.Process.CurrentActivity.Descriptor.Key); MoveAgreeProcessOneStepAndValidate(activityB.Process, 2); Console.WriteLine("第二次退回之后"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); Assert.AreEqual("N3", activityB.Process.CurrentActivity.Descriptor.Key); }
public void AddApproverReturnTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareAddApproverReturnProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); process.MoveToNextDefaultActivity(); Assert.AreEqual("B", process.CurrentActivity.Descriptor.Key); WfAddApproverExecutor executor = new WfAddApproverExecutor(process.CurrentActivity, process.CurrentActivity); executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object); executor.ExecuteNotPersist(); Assert.AreEqual(6, process.Activities.Count, "加签后变成6个活动"); process.MoveToNextDefaultActivity(); //B的衍生点 Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); process.MoveToNextDefaultActivity(); //C的衍生点 Assert.AreEqual("C", process.CurrentActivity.Descriptor.Key); ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, "B"); Assert.AreEqual(8, process.Activities.Count, "退回后8个活动"); Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); process.MoveToNextDefaultActivity(); //C的衍生点 Assert.AreEqual("C", process.CurrentActivity.Descriptor.AssociatedActivityKey); process.MoveToNextDefaultActivity(); //D Assert.AreEqual("D", process.CurrentActivity.Descriptor.Key); }
public void AgreeReturnTwiceTest() { IWfActivity activityB = ReturnExecutorTestHelper.PrepareAndMoveToAgreeSelectorActivity(); Assert.AreEqual("B", activityB.Descriptor.Key); SetToLineAndMSLineSelected(activityB, "C", false); SetToLineAndMSLineSelected(activityB, "A", true); Console.WriteLine("第一次退回之前,不同意"); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); MoveAgreeProcessAndValidate(activityB.Process, 1); Console.WriteLine("第二次退回之前,同意"); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); MoveAgreeProcessAndValidate(activityB.Process, 2); Console.WriteLine("第二次退回之后,同意"); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); activityB.Process.ValidateMainStreamActivities("A", "B", "C", "D", "F"); }
public void ReturnOnceThenWithdrawTest() { IWfActivity activityD = ReturnExecutorTestHelper.PrepareAndMoveToSpecialActivity(); int originalActivityCount = activityD.Process.Activities.Count; Assert.AreEqual("D", activityD.Descriptor.Key); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("退件之后"); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); IWfProcess process = activityD.Process.WithdrawByExecutor(); Console.WriteLine("撤回之后"); process.OutputMainStream(); process.OutputEveryActivities(); Assert.AreEqual(originalActivityCount, process.Activities.Count, "撤回后与退件前的活动数一样"); Assert.AreEqual(originalActivityCount, process.Descriptor.Activities.Count, "撤回后与退件前的活动数一样"); }
public void AgreeReturnOnceThenWithdrawTest() { IWfActivity activityB = ReturnExecutorTestHelper.PrepareAndMoveToAgreeSelectorActivity(); Assert.AreEqual("B", activityB.Descriptor.Key); SetToLineAndMSLineSelected(activityB, "C", false); SetToLineAndMSLineSelected(activityB, "A", true); Console.WriteLine("退回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); MoveAgreeProcessOneStepAndValidate(activityB.Process, 1); Console.WriteLine("撤回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); activityB.Process.OutputMainStream(); activityB.Process.OutputEveryActivities(); IWfProcess process = activityB.Process.WithdrawByExecutor(); activityB.Process.OutputEveryActivities(); Console.WriteLine("撤回之后"); Console.WriteLine("当前活动{0}", process.CurrentActivity.Descriptor.Key); process.OutputMainStream(); process.OutputEveryActivities(); //activityB.Process.Descriptor.Output(); //ReturnExecutorTestHelper.ValidateMainStreamActivities(activityB.Process, "A", "B", "C", "D", "F"); }
public void ReturnTwiceTest() { IWfActivity activityD = ReturnExecutorTestHelper.PrepareAndMoveToSpecialActivity(); Assert.AreEqual("D", activityD.Descriptor.Key); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); //第一次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第一次退回后"); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); activityD.Process.MoveToNextDefaultActivity(); //B1 activityD.Process.MoveToNextDefaultActivity(); //C1 activityD.Process.MoveToNextDefaultActivity(); //D1 Assert.AreEqual("D", activityD.Process.CurrentActivity.Descriptor.AssociatedActivityKey); //在B的出线C和E之间选择E activityD.Process.ApplicationRuntimeParameters["IsCLine"] = false; //第二次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第二次退回后"); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); activityD.Process.ValidateMainStreamActivities("A", "B", "E", "D", "F"); }
public void ParallelBranchActivitySecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfBranchProcessTemplateDescriptor template = processDesp.Activities["NormalActivity"].BranchProcessTemplates["Consign"]; template.Resources.Clear(); template.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object)); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivity(process); IWfProcess consignBranchProcess = process.Activities.FindActivityByDescriptorKey("NormalActivity").BranchProcessGroups["Consign"].Branches.FirstOrDefault(); IWfProcess distributeBranchProcess = process.Activities.FindActivityByDescriptorKey("NormalActivity").BranchProcessGroups["Distribute"].Branches.FirstOrDefault(); Console.WriteLine("Consign Process"); OutputProcessCandidates(consignBranchProcess); ReturnExecutorTestHelper.OutputMainStream(consignBranchProcess); Console.WriteLine(""); Console.WriteLine("Distribute Process"); OutputProcessCandidates(distributeBranchProcess); ReturnExecutorTestHelper.OutputMainStream(distributeBranchProcess); Assert.AreEqual(4, consignBranchProcess.Activities.Count); Assert.AreEqual(2, distributeBranchProcess.Activities.Count); Assert.AreEqual(4, consignBranchProcess.MainStream.Activities.Count); Assert.AreEqual(2, distributeBranchProcess.MainStream.Activities.Count); }
public void SimpleCopyMainStreamActivitiesTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareStraightProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); process.MoveToNextDefaultActivity(); //To B process.MoveToNextDefaultActivity(); //To C IWfActivity activityB = process.Activities.FindActivityByDescriptorKey("B"); //从B复制到C process.Activities.FindActivityByDescriptorKey("C").CopyMainStreamActivities(activityB, null, WfControlOperationType.Return); process.Descriptor.OutputEveryActivities(); process.MoveToNextDefaultActivity(); //To CopiedB Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); IWfActivityDescriptor copiedB = process.CurrentActivity.Descriptor; Assert.AreEqual("B", copiedB.AssociatedActivityKey); Assert.AreEqual("C", copiedB.ToTransitions.First().ToActivity.AssociatedActivityKey, "复制出的B指向C"); }
public void SimpleSecretaryWithReturnLineTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretaryAndReturnLine(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); IWfActivity normalActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); IWfActivityDescriptor firstSecretary = normalActivity.Descriptor.FromTransitions.FirstOrDefault().FromActivity; Assert.AreEqual(1, firstSecretary.ToTransitions.Count); IWfActivityDescriptor secondSecretary = normalActivity.Descriptor.ToTransitions.FirstOrDefault().ToActivity; Assert.AreEqual(2, secondSecretary.ToTransitions.Count); Assert.AreEqual(2, normalActivity.Descriptor.ToTransitions.Count); foreach (IWfTransitionDescriptor transition in normalActivity.Descriptor.ToTransitions) { Assert.AreEqual(secondSecretary.Key, transition.ToActivity.Key); } }
public void SimpleSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
public void ReturnTwiceThenWithdrawTwiceTest() { IWfActivity activityD = ReturnExecutorTestHelper.PrepareAndMoveToSpecialActivity(); int originalActivityCount = activityD.Process.Activities.Count; Assert.AreEqual("D", activityD.Descriptor.Key); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); //第一次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第一次退回后"); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); activityD.Process.MoveToNextDefaultActivity(); //B1 activityD.Process.MoveToNextDefaultActivity(); //C1 activityD.Process.MoveToNextDefaultActivity(); //D1 Assert.AreEqual("D", activityD.Process.CurrentActivity.Descriptor.AssociatedActivityKey); //在B的出线C和E之间选择E activityD.Process.ApplicationRuntimeParameters["IsCLine"] = false; //第二次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第二次退回后"); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); IWfProcess process = activityD.Process.WithdrawByExecutor(); Console.WriteLine("第一组撤回之后"); process.OutputMainStream(); process.OutputEveryActivities(); process = process.WithdrawByExecutor(); //C1; process = process.WithdrawByExecutor(); //B1 process = process.WithdrawByExecutor(); //A1 process = process.WithdrawByExecutor(); Console.WriteLine("第二组撤回之后"); process.OutputMainStream(); process.OutputEveryActivities(); Assert.AreEqual(originalActivityCount, process.Activities.Count, "撤回后与退件前的活动数一样"); Assert.AreEqual(originalActivityCount, process.Descriptor.Activities.Count, "撤回后与退件前的活动数一样"); }
public void ChangeGenerateSimpleSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["vp"].Object); WfRuntime.DecorateProcess(process); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
public void ActiveMatrixResourceTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.GetDynamicProcessDesp(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 } }); Console.WriteLine(process.Activities.Count); ReturnExecutorTestHelper.OutputMainStream(process); ReturnExecutorTestHelper.OutputEveryActivities(process); Assert.AreEqual(4, process.Activities.Count); }
public void DynamicActivityWithActivityMatrixReturnToInitialTest() { IRole role = PrepareSOARole(); IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"]; FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection() { new WfRoleResourceDescriptor(role) }); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" } }); //到第一个动态活动 WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); //到第二个动态活动 WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); //退回到起始点 ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, process.InitialActivity.Descriptor.Key); process = WfRuntime.GetProcessByProcessID(process.ID); Console.WriteLine(process.CurrentActivity.Descriptor.Key); Console.WriteLine(process.CompletedActivity.Descriptor.FromTransitions.GetAllCanTransitForwardTransitions().Count); ReturnExecutorTestHelper.OutputMainStream(process); ReturnExecutorTestHelper.OutputEveryActivities(process); Assert.AreEqual(1, process.CompletedActivity.Descriptor.FromTransitions.GetAllCanTransitForwardTransitions().Count, "结束点应该只有一条有效的入线s"); Assert.AreEqual(process.InitialActivity.Descriptor.Key, process.CurrentActivity.Descriptor.AssociatedActivityKey); }
public void DynamicActivityWithActivityMatrixReturnToInitialTwiceTest() { IRole role = PrepareSOARole(); IWfProcessDescriptor processDesp = ProcessHelper.CreateSimpleProcessDescriptor(); IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"]; FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection() { new WfRoleResourceDescriptor(role) }); IWfProcess process = processDesp.StartupProcess(new Dictionary <string, object>() { { "CostCenter", "1001" } }); //到第一个动态活动 process = process.MoveToDefaultActivityByExecutor(); //到第二个动态活动 process = process.MoveToDefaultActivityByExecutor(); //第一次退回到起始点 process = OutputAndAssertProcessInfo(process, "第一次退回到起始点", (p) => ReturnExecutorTestHelper.ExecuteReturnOperation(p.CurrentActivity, p.InitialActivity.Descriptor.Key)); //再到第一个动态活动 process = process.MoveToDefaultActivityByExecutor(); //再到第二个动态活动 process = process.MoveToDefaultActivityByExecutor(); //第二次退回到起始点 process = OutputAndAssertProcessInfo(process, "第二次退回到起始点", (p) => ReturnExecutorTestHelper.ExecuteReturnOperation(p.CurrentActivity, p.InitialActivity.Descriptor.Key)); Assert.AreEqual(1, process.CompletedActivity.Descriptor.FromTransitions.GetAllCanTransitForwardTransitions().Count, "结束点应该只有一条有效的入线s"); Assert.AreEqual(process.InitialActivity.Descriptor.Key, process.CurrentActivity.Descriptor.AssociatedActivityKey); }
public void BasicDynamicActivityReturnTest() { IWfProcessDescriptor processDesp = ProcessHelper.CreateSimpleProcessDescriptor(); IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"]; FillDynamicActivitySimpleResource(templateActDesp, (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); IWfProcess process = processDesp.StartupProcess(); process.OutputMainStream(); process.OutputEveryActivities(); process.MoveToNextDefaultActivity(); ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, processDesp.InitialActivity.Key); //N2(Initial)->N1->N4->N5->Completed process.OutputMainStream(); //N1->N2(Initial)->N4->N5->Completed process.OutputEveryActivities(); Assert.AreEqual("Initial", process.CurrentActivity.Descriptor.GetAssociatedActivity().Key); Assert.AreEqual(2, process.CurrentActivity.Descriptor.ToTransitions.Count); process.MoveToNextDefaultActivity(); //Assert.AreEqual("N4", process.CurrentActivity.Descriptor.Key); //To N4 //N2(Initial)->N1->N4->N5->Completed process.OutputMainStream(); //N1->N2(Initial)->N4->N5->Completed process.OutputAndAssertEveryActivities(); //IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp); //ValidateInDynamicTransitionsProperties(firstDynamicActDesp.FromTransitions, templateActDesp); //ValidateLastDynamicTransitions(templateActDesp); //ValidateTemplateCandidatesAndDynamicActivityCandidates(firstDynamicActDesp, templateActDesp); }
public void MoveToCopiedMainStreamActivitiesTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareCopyTestProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); process.Activities.FindActivityByDescriptorKey("B").CopyMainStreamActivities(process.InitialActivity, null, WfControlOperationType.Return); process.MoveToNextDefaultActivity(); //To B Assert.AreEqual("B", process.CurrentActivity.Descriptor.Key); process.MoveToNextDefaultActivity(); //To A1 Assert.AreEqual("A", process.CurrentActivity.Descriptor.AssociatedActivityKey); process.MoveToNextDefaultActivity(); //To B1 Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); process.MoveToNextDefaultActivity(); //To C Assert.AreEqual("C", process.CurrentActivity.Descriptor.Key); }
public void DynamicActivityWithActivityMatrixReturnToInnerTest() { IRole role = PrepareSOARole(); IWfProcessDescriptor processDesp = ProcessHelper.CreateSimpleProcessDescriptor(); IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"]; FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection() { new WfRoleResourceDescriptor(role) }); IWfProcess process = processDesp.StartupProcess(new Dictionary <string, object>() { { "CostCenter", "1001" } }); //到第一个动态活动 process = process.MoveToDefaultActivityByExecutor(); string targetActKey = process.CurrentActivity.Descriptor.Key; //到第二个动态活动 process = process.MoveToDefaultActivityByExecutor(); //退回到第一个动态活动 ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, targetActKey); process = WfRuntime.GetProcessByProcessID(process.ID); Console.WriteLine("Current Activity Key: {0}", process.CurrentActivity.Descriptor.Key); process.OutputMainStream(); process.OutputAndAssertEveryActivities(); Console.WriteLine("Next Default Activity Key: {0}", process.CurrentActivity.Descriptor.ToTransitions.GetAllCanTransitForwardTransitions().First().ToActivity.Key); Assert.AreEqual(targetActKey, process.CurrentActivity.Descriptor.AssociatedActivityKey); }
public void SimpleCopyTwiceMainStreamActivitiesTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareStraightProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); process.MoveToNextDefaultActivity(); //To B process.MoveToNextDefaultActivity(); //To C IWfActivity activityB = process.Activities.FindActivityByDescriptorKey("B"); //第一次 process.Activities.FindActivityByDescriptorKey("C").CopyMainStreamActivities(activityB, null, WfControlOperationType.Return); Console.WriteLine("第一次"); process.Descriptor.OutputEveryActivities(); process.MoveToNextDefaultActivity(); //To CopiedB Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); //第二次 process.CurrentActivity.CopyMainStreamActivities(process.CurrentActivity, process.InitialActivity, activityB, null, WfControlOperationType.Return); Console.WriteLine("第二次"); process.Descriptor.OutputEveryActivities(); IWfActivityDescriptor copiedA = process.CurrentActivity.Descriptor.ToTransitions.First().ToActivity; Assert.AreEqual("A", copiedA.AssociatedActivityKey); IWfActivityDescriptor copiedBAgain = copiedA.ToTransitions.First().ToActivity; Assert.AreEqual("B", copiedBAgain.AssociatedActivityKey, "验证第二次复制的B"); IWfActivityDescriptor copiedC = copiedBAgain.ToTransitions.First().ToActivity; Assert.AreEqual("C", copiedC.AssociatedActivityKey, "验证第二次复制出的B指向第一次复制出的C"); }
public void ReturnOnceTest() { IWfActivity activityD = ReturnExecutorTestHelper.PrepareAndMoveToSpecialActivity(); Assert.AreEqual("D", activityD.Descriptor.Key); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); activityD.Process.ValidateMainStreamActivities("A", "B", "C", "D", "F"); ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); IWfActivity returnedActivity = activityD.Process.CurrentActivity; Assert.AreEqual("A", returnedActivity.Descriptor.AssociatedActivityKey); Assert.AreEqual(activityD.ID, returnedActivity.CreatorInstanceID); ReturnExecutorTestHelper.ValidateBRelativeActivityOutTransitions(activityD.Process.CurrentActivity); activityD.Process.OutputMainStream(); activityD.Process.OutputEveryActivities(); activityD.Process.ValidateMainStreamActivities("A", "B", "C", "D", "F"); }