/// <summary>模板方法</summary> /// <param name="callbak"></param> /// <returns> /// <para>返回的对象一般有三种情况:</para> /// <para>1、单个工作流引擎API对象(如IProcessInstance,ITaskInstance,IworkItem等)</para> /// <para>2、工作流引擎对象的列表、3、null</para> /// </returns> public Object execute(IWorkflowSessionCallback callback) { try { Object result = callback.doInWorkflowSession(RuntimeContext); if (result != null) { if (result is IRuntimeContextAware) { ((IRuntimeContextAware)result).RuntimeContext = this.RuntimeContext; } if (result is IWorkflowSessionAware) { ((IWorkflowSessionAware)result).CurrentWorkflowSession = this; } if (result is List <Object> ) { List <Object> l = (List <Object>)result; for (int i = 0; i < l.Count; i++) { Object item = l[i]; if (item is IRuntimeContextAware) { ((IRuntimeContextAware)item).RuntimeContext = this.RuntimeContext; if (item is IWorkflowSessionAware) { ((IWorkflowSessionAware)item).CurrentWorkflowSession = this; } } else { break; } } } } return(result); } finally { } }
/// <summary>模板方法</summary> /// <param name="callbak"></param> /// <returns> /// <para>返回的对象一般有三种情况:</para> /// <para>1、单个工作流引擎API对象(如IProcessInstance,ITaskInstance,IworkItem等)</para> /// <para>2、工作流引擎对象的列表、3、null</para> /// </returns> public Object execute(IWorkflowSessionCallback callback) { try { Object result = callback.doInWorkflowSession(RuntimeContext); if (result != null) { if (result is IRuntimeContextAware) { ((IRuntimeContextAware)result).RuntimeContext = this.RuntimeContext; } if (result is IWorkflowSessionAware) { ((IWorkflowSessionAware)result).CurrentWorkflowSession = this; } if (result is List<Object>) { List<Object> l = (List<Object>)result; for (int i = 0; i < l.Count; i++) { Object item = l[i]; if (item is IRuntimeContextAware) { ((IRuntimeContextAware)item).RuntimeContext = this.RuntimeContext; if (item is IWorkflowSessionAware) { ((IWorkflowSessionAware)item).CurrentWorkflowSession = this; } } else { break; } } } } return result; } finally { } }