Exemple #1
0
        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");
        }
Exemple #3
0
        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");
        }
Exemple #10
0
        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");
        }
Exemple #12
0
        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);
            }
        }
Exemple #13
0
        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, "撤回后与退件前的活动数一样");
        }
Exemple #15
0
        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);
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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);
        }
Exemple #18
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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");
        }