Пример #1
0
        public void ReturnExecutorTestReplay()
        {
            IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee();

            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process);

            //退件到初始活动
            process = WfRuntime.GetProcessByProcessID(process.ID);
            WfReturnExecutor returnExec = new WfReturnExecutor(process.CurrentActivity, process.Activities[0]);

            returnExec.Execute();

            Assert.IsTrue(process.CurrentActivity.CreatorInstanceID != "");
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban));

            process = WfRuntime.GetProcessByProcessID(process.ID);
            IWfActivity act = process.Activities.FindActivityByDescriptorKey(process.CurrentActivity.Descriptor.AssociatedActivityKey);

            Assert.AreEqual(act.Assignees.Count, process.CurrentActivity.Assignees.Count);

            Assert.AreEqual(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity.AssociatedActivityKey, act.Descriptor.ToTransitions[0].ToActivity.Key);
            Assert.IsTrue(process.Activities.FindActivityByDescriptorKey(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity.Key).Assignees.Count > 0);
        }
Пример #2
0
        public void ReturnExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee();

            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.requestor, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            WfReturnExecutor returnExec = new WfReturnExecutor(process.CurrentActivity, process.Activities[1]);

            returnExec.Execute();

            process = WfRuntime.GetProcessByProcessID(process.ID);
            Assert.IsTrue(process.CurrentActivity.CreatorInstanceID != "");
            Assert.AreEqual(process.ElapsedActivities[process.ElapsedActivities.Count - 1].ID, process.CurrentActivity.CreatorInstanceID);

            WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities();

            Assert.AreEqual(6, coll.Count);
            Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban));
        }
Пример #3
0
        public static void ExecuteReturnOperation(IWfActivity currentActivity, string targetKey)
        {
            IWfActivity      targetActivity = currentActivity.Process.Activities.FindActivityByDescriptorKey(targetKey);
            WfReturnExecutor executor       = new WfReturnExecutor(currentActivity, targetActivity);

            executor.ExecuteNotPersist();
        }
Пример #4
0
        public static IWfProcess ExecuteReturnOperation(IWfActivity currentActivity, string targetKey)
        {
            IWfActivity      targetActivity = currentActivity.Process.Activities.FindActivityByDescriptorKey(targetKey);
            WfReturnExecutor executor       = new WfReturnExecutor(currentActivity, targetActivity);

            IWfProcess process = executor.ExecuteNotPersist();

            return(WfRuntime.GetProcessByProcessID(process.ID));
        }
Пример #5
0
        public WfExecutorBase CreateExecutor()
        {
            WfExecutorBase executor = null;

            switch (this.OperationType)
            {
            case WfControlOperationType.MoveTo:
                executor = new WfMoveToExecutor(
                    WfClientContext.Current.OriginalActivity,
                    WfClientContext.Current.OriginalActivity, ToTransferParams(),
                    WfClientContext.Current.Locks);
                break;

            case WfControlOperationType.Consign:
            {
                WfAssigneeCollection assignees = new WfAssigneeCollection();

                WfAssignee assignee = new WfAssignee(WfClientContext.Current.User);

                assignees.Add(assignee);

                executor = new WfConsignExecutor(
                    WfClientContext.Current.OriginalActivity,
                    WfClientContext.Current.OriginalActivity,
                    assignees,
                    this.Assignees.ToUsers(),
                    this.Circulators.ToUsers(),
                    BlockingType,
                    SequenceType);
            }
            break;

            case WfControlOperationType.Return:
                if (this._RejectMode == WfRejectMode.LikeAddApprover)
                {
                    executor = new WfAddApproverExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                }
                else
                {
                    executor = new WfReturnExecutor(WfClientContext.Current.CurrentActivity, WfClientContext.Current.CurrentActivity.Process.Activities.FindActivityByDescriptorKey(TargetActivityDescriptor.Key));
                }
                break;

            default:
                throw new WfRuntimeException(Translator.Translate(Define.DefaultCulture, "不能处理操作类型为{0}", this.OperationType));
            }

            return(executor);
        }