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; }
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); }
public static void ExecuteReturnOperation(IWfActivity currentActivity, string targetKey) { IWfActivity targetActivity = currentActivity.Process.Activities.FindActivityByDescriptorKey(targetKey); WfReturnExecutor executor = new WfReturnExecutor(currentActivity, targetActivity); executor.ExecuteNotPersist(); }