Ejemplo n.º 1
0
        public void BaseAddApproverExecutorStandardModeWithWithdrawTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            int originalActCount = process.Activities.Count;

            WfProcessTestCommon.MoveToNextDefaultActivity(process);

            int originalElapsedActCount = process.ElapsedActivities.Count;

            IWfActivity           targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity");
            WfAddApproverExecutor executor       = new WfAddApproverExecutor(process.CurrentActivity, targetActivity);

            executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object);
            executor.Execute();

            Console.WriteLine("Elapsed activities: {0}", process.ElapsedActivities.Count);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            WfWithdrawExecutor withdrawExecutor = new WfWithdrawExecutor(process.CurrentActivity, process.CurrentActivity);

            withdrawExecutor.Execute();

            Console.WriteLine("Elapsed activities: {0}", process.ElapsedActivities.Count);

            Assert.AreEqual(originalElapsedActCount, process.ElapsedActivities.Count);
            Assert.AreEqual(originalActCount, process.Activities.Count, "撤回后,恢复为加签之前的状态");
            Assert.AreEqual(originalActCount, process.MainStream.Activities.Count, "撤回后,主线流程的活动也没有变化");

            WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities();
            WfMainStreamActivityDescriptorCollection processMSA     = process.GetMainStreamActivities(true);

            processDespMSA.Output("流程描述中的主线活动");
            processMSA.Output("主线流程中的主线活动");
        }
Ejemplo n.º 2
0
        public void BaseAddApproverExecutorOnlyAddApproverModeTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            int originalActCount = process.Activities.Count;

            WfProcessTestCommon.MoveToNextDefaultActivity(process);

            IWfActivity           targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity");
            WfAddApproverExecutor executor       = new WfAddApproverExecutor(process.CurrentActivity, targetActivity);

            executor.AddApproverMode = WfAddApproverMode.OnlyAddApprover;

            executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object);
            executor.Execute();

            Assert.AreEqual(originalActCount + 1, process.Activities.Count);
            Assert.AreEqual(originalActCount + 1, process.MainStream.Activities.Count);

            WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities();
            WfMainStreamActivityDescriptorCollection processMSA     = process.GetMainStreamActivities(true);

            processDespMSA.Output("流程描述中的主线活动");
            processMSA.Output("主线流程中的主线活动");
        }
Ejemplo n.º 3
0
        public void AddApproverExecutorTest()
        {
            //Initial  NormalActivity  NormalActivity1 NormalActivity2 NormalActivity3 Completed
            IUser user = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object;

            IWfProcessDescriptor     procDesp = WfProcessTestCommon.CreateProcessDescriptor();
            WfUserResourceDescriptor userDesp = new WfUserResourceDescriptor(user);

            procDesp.InitialActivity.Resources.Add(userDesp);

            WfProcessStartupParams  startParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(procDesp);
            WfStartWorkflowExecutor exec        = new WfStartWorkflowExecutor(null, startParams);
            IWfProcess proc = exec.Execute();             //启动流程

            IWfProcess wfp = WfRuntime.GetProcessByProcessID(proc.ID);

            MoveToExecutor(wfp);            //流转一步 ,即第2个节点

            IWfProcess           p         = WfRuntime.GetProcessByProcessID(proc.ID);
            WfAssigneeCollection assignees = new WfAssigneeCollection();

            assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object);

            WfAddApproverExecutor addExec = new WfAddApproverExecutor(p.CurrentActivity, p.CurrentActivity, assignees);

            addExec.Execute();             //加签,即流转到加签点上

            IWfProcess process = WfRuntime.GetProcessByProcessID(p.ID);

            Assert.AreEqual(process.Descriptor.GetMainStreamActivities().Count, process.Activities.Count - 2, "动态添加两个活动,因被加签人要回到加签人");
            Assert.AreEqual(2, process.ElapsedActivities.Count);
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban));
            Assert.IsTrue(process.CurrentActivity.Descriptor.ToTransitions.Count == 1);
            Assert.IsNotNull(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity);

            IWfProcess wfProcess9 = WfRuntime.GetProcessByProcessID(process.ID);

            WfWithdrawExecutor withdrawExec = new WfWithdrawExecutor(wfProcess9.CurrentActivity, wfProcess9.CurrentActivity);

            withdrawExec.Execute();

            IWfProcess wfProcess1 = WfRuntime.GetProcessByProcessID(wfProcess9.ID);

            Assert.AreEqual(wfProcess1.Activities.Count, wfProcess1.Descriptor.GetMainStreamActivities().Count, "此处应该撤回到加签的活动点上,同时被加签的两个点都应该移除");
            Assert.AreEqual(1, wfProcess1.ElapsedActivities.Count);
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(wfProcess1.CurrentActivity.ID, TaskStatus.Ban));
            Assert.IsTrue(wfProcess1.CurrentActivity.Descriptor.ToTransitions.Count == 1);
        }