コード例 #1
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;
        }
コード例 #2
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);
        }
コード例 #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();
		}