Beispiel #1
0
        /// <summary>
        /// 判断是否可以向下个节点流转
        /// </summary>
        /// <param name="InstanceID"></param>
        /// <param name="NodeID"></param>
        /// <returns></returns>
        public static bool IsNodeThroughEnable(string InstanceID, string NextNodeID)
        {
            try
            {
                string FlowScript   = GetNodeScript(NextNodeID, EScriptType.FlowScript);
                string ScriptResult = null;
                if (FlowScript != "")
                {
                    ScriptResult = CScriptOpe.ScriptExec(FlowScript, InstanceID).ToString();
                }

                if (FlowScript == "" || ScriptResult == "True")
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                CLog.PutDownErrInfo("判断是否可以向下流转操作异常。实例ID:" + InstanceID + ",下一个节点ID:" + NextNodeID + ",异常信息" + ex.Message.ToString());
                throw ex;
            }
        }
Beispiel #2
0
 /// <summary>
 /// 通过工作流实例ID和分支节点ID,获取当前分支节点所选的分支的名称
 /// </summary>
 /// <param name="InstanceID">工作流实例ID</param>
 /// <param name="NodeID">节点ID</param>
 /// <returns></returns>
 public static string[] GetSwitchName(string InstanceID, string NodeID)
 {
     try
     {
         string[] SwitchNames  = null;
         string   SwitchScript = CDataHelper.GetData("select switchscript from " + CTableName.FlowChartNode + " where [node_id]='" + NodeID + "'");
         if (SwitchScript == null || SwitchScript == "")
         {
             return(null);
         }
         else
         {
             object SwitchNameObj = CScriptOpe.ScriptExec(SwitchScript, InstanceID);
             if (SwitchNameObj == null || SwitchNameObj == "")
             {
                 return(null);
             }
             else
             {
                 SwitchNames = SwitchNameDecode(SwitchNameObj);
                 return(SwitchNames);
             }
         }
     }
     catch (Exception ex)
     {
         CLog.PutDownErrInfo("获取节点流转分支操作异常。实例ID:" + InstanceID + ",节点ID:" + NodeID + ",异常信息:" + ex.Message.ToString());
         throw ex;
     }
 }
        /// <summary>
        /// 流程流转命令处理
        /// </summary>
        /// <param name="InstanceID">流程实例的ID</param>
        /// <param name="NodeID">节点ID</param>
        /// <param name="ApprovalOpinion">申批意见,同意,不同意,驳回上级,驳回至发起人</param>
        /// <param name="OpeManID">申批人ID</param>
        /// <param name="ApprovalReason">申批备注</param>
        private string WFTransmitDeal(string InstanceID, string NodeID, EApprovalOpinion ApprovalOpinion, string OpeManID, string ApprovalReason)
        {
            try
            {
                //获取并执行审批脚本
                string script = CNodeManager.GetApprovalScript(NodeID, ApprovalOpinion);
                if (script != null && script != "")
                {
                    CScriptOpe.ScriptExec(script, InstanceID);
                }

                //记录审批意见和状态
                string UpdateApprovalOpinionResult = CApprovalManager.UpdateApprovalOpinion(InstanceID, NodeID, ApprovalOpinion, OpeManID, ApprovalReason);
                if (UpdateApprovalOpinionResult != WFGlobal.success)
                {
                    return(UpdateApprovalOpinionResult);
                }

                //判断是否可以流转到下一级
                string NextNodeID = CNodeManager.GetNextNodeIDByCurrentNodeID(NodeID, ApprovalOpinion);
                if (CNodeManager.IsNodeThroughEnable(InstanceID, NextNodeID))
                {
                    //记录该节点所有审批人的审批状态
                    string UpdateNodeApprovalStatusResult = CApprovalManager.UpdateNodeApprovalStatus(InstanceID, NodeID, EApprovalStatus.Complete);
                    if (UpdateNodeApprovalStatusResult != WFGlobal.success)
                    {
                        return(UpdateNodeApprovalStatusResult);
                    }

                    if (ApprovalOpinion == EApprovalOpinion.驳回上级)
                    {
                        return(CReturnUP.ReturnUp(InstanceID, NodeID, NextNodeID));
                    }
                    else if (ApprovalOpinion == EApprovalOpinion.驳回至发起人)
                    {
                        return(CReturnToStart.ReturnToStart(InstanceID, NodeID, NextNodeID));
                    }
                    else if (ApprovalOpinion == EApprovalOpinion.意)
                    {
                        return(CGoEnd.GoEnd(InstanceID, NodeID, NextNodeID));
                    }
                    else
                    {
                        return(CNodeManager.GoNextNodesFromOtherNode(InstanceID, NodeID));
                    }
                }
                return(WFGlobal.success);
            }
            catch (Exception ex)
            {
                WFGlobal.ErrInfo = CLog.PutDownErrInfo("流程流转异常:" + ex.Message.ToString());
                return(WFGlobal.ErrInfo);
            }
        }
 /// <summary>
 /// 获取审批人
 /// </summary>
 /// <param name="InstanceID"></param>
 /// <param name="NodeID"></param>
 /// <returns></returns>
 public static DataTable GetApprover(string InstanceID, string NodeID)
 {
     try
     {
         string    ApproverScript = CDataHelper.GetData("select [operatorscript] from " + CTableName.FlowChartNode + " where [node_id]='" + NodeID + "'");
         DataTable dtApprover     = (DataTable)CScriptOpe.ScriptExec(ApproverScript, InstanceID);
         return(dtApprover);
     }
     catch (Exception ex)
     {
         CLog.PutDownErrInfo("获取审批人操作异常。实例ID:,节点ID:,异常信息:" + ex.Message.ToString());
         throw ex;
     }
 }
Beispiel #5
0
 /// <summary>
 /// 运行流程节点处理脚本
 /// </summary>
 /// <param name="InstanceID"></param>
 /// <param name="ProcessNodeID"></param>
 private static void RunProcessScript(string InstanceID, string ProcessNodeID)
 {
     try
     {
         string ProcessScript = CNodeManager.GetNodeScript(ProcessNodeID, EScriptType.ProcessScript);
         if (ProcessScript != null && ProcessScript != "")
         {
             CScriptOpe.ScriptExec(ProcessScript, InstanceID);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary>
 /// 获取审批提示信息
 /// </summary>
 /// <param name="InstanceID"></param>
 /// <param name="NodeID"></param>
 /// <returns></returns>
 public static string GetApprovalNote(string InstanceID, string NodeID)
 {
     try
     {
         string strApprovalNote    = null;
         string ApprovalNoteScript = CDataHelper.GetData("select [approvalnotescript] from " + CTableName.FlowChartNode + " where [node_id]='" + NodeID + "'");
         if (ApprovalNoteScript != null && ApprovalNoteScript != "")
         {
             strApprovalNote = (string)CScriptOpe.ScriptExec(ApprovalNoteScript, InstanceID);
         }
         return(strApprovalNote);
     }
     catch (Exception ex)
     {
         CLog.PutDownErrInfo("获取审批提示操作异常。实例ID:,节点ID:,异常信息:" + ex.Message.ToString());
         throw ex;
     }
 }