/// <summary>
		/// 执行Executor,但是不执行保存逻辑
		/// </summary>
		/// <param name="executor"></param>
		public void ExecuteNoPersist(WfExecutorBase executor)
		{
			executor.NullCheck("executor");

			executor.AfterModifyWorkflow += new ExecutorEventHandler(executor_AfterModifyWorkflow);

			try
			{
				IWfProcess currentProcess = executor.ExecuteNotPersist();
			}
			finally
			{
				executor.AfterModifyWorkflow -= new ExecutorEventHandler(executor_AfterModifyWorkflow);
			}
		}
 public WfExecutorDataContext(WfExecutorBase executor, WfControlOperationType opType)
 {
     this._Executor      = executor;
     this._OperationType = opType;
 }
		/// <summary>
		/// 执行流转或保存操作。
		/// </summary>
		/// <param name="actionName">操作名称</param>
		/// <param name="action">实际操作</param>
		private void ExecuteOperation(string actionName, WfControlOperationType operationType, WfExecutorBase executor)
		{
			StringBuilder strScript = new StringBuilder();

			ExceptionHelper.FalseThrow(WfClientContext.Current.HasProcessChanged == false && WfClientContext.Current.InMoveToMode,
				Translator.Translate(Define.DefaultCulture, "当前流程的状态已经改变,不能流转"));

			try
			{
				if (executor != null)
					WfClientContext.Current.Execute(executor);

				HttpContext.Current.Response.Write(ExtScriptHelper.GetRefreshBridgeScript());

				strScript.Append(GetAfterExecutionScript(operationType));

				ResponsePostBackPlaceHolder();
			}
			catch (System.Exception ex)
			{
				ResponsePostBackPlaceHolder();

				System.Exception innerEx = ExceptionHelper.GetRealException(ex);

				if (innerEx is ApplicationInformationException)
					WebUtility.ResponseShowClientMessageScriptBlock(innerEx.Message, innerEx.StackTrace, Translator.Translate(Define.DefaultCulture, "流转"));
				else
					WebUtility.ResponseShowClientErrorScriptBlock(innerEx.Message, innerEx.StackTrace, Translator.Translate(Define.DefaultCulture, "流转"));
			}
			finally
			{
				strScript.Insert(0, "if (parent.document.all('wfOperationNotifier')) parent.document.all('wfOperationNotifier').value = '';");

				WebUtility.ResponseTimeoutScriptBlock(strScript.ToString(), ExtScriptHelper.DefaultResponseTimeout);

				Page.Response.End();
			}
		}
		protected virtual void OnAfterCreateExecutor(WfExecutorBase executor)
		{
			executor.NullCheck("executor");

			if (AfterCreateExecutor != null)
				AfterCreateExecutor(executor);

			ProcessProgress.Current.RegisterResponser(SubmitButtonProgressResponser.Instance);
		}
		internal void OnAfterCreateModifyProcessExecutor(WfExecutorBase executor)
		{
			if (AfterCreateModifyProcessExecutor != null)
				AfterCreateModifyProcessExecutor(executor);
		}