/// <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); }