Esempio n. 1
0
 /// <summary>
 /// 根据不同的审批意见获取不同的下一级节点
 /// </summary>
 /// <param name="NodeID">当前节点ID</param>
 /// <param name="Apo"></param>
 /// <returns></returns>
 public static string GetNextNodeIDByCurrentNodeID(string NodeID, EApprovalOpinion Apo)
 {
     try
     {
         string WFID = CWFManager.GetWFIDByNodeID(NodeID);
         if (Apo == EApprovalOpinion.意)
         {
             return(CDataHelper.GetData("select next_node_id from " + CTableName.FlowChartLine + " where node_id='" + NodeID + "'"));
         }
         else if (Apo == EApprovalOpinion.意)
         {
             return(CDataHelper.GetData("select [node_id] from " + CTableName.FlowChartNode + " where [flowchart_id]='" + WFID + "' and [nodetype]='" + CNodeType.EndType + "'"));
         }
         else if (Apo == EApprovalOpinion.驳回上级)
         {
             return(GetUpApprovalNodeID(NodeID));
         }
         else
         {
             return(GetStartNodeID(WFID));
         }
     }
     catch (Exception ex)
     {
         CLog.PutDownErrInfo("通过节点ID获取下一个节点ID操作异常。节点ID:" + NodeID + ",异常信息:" + ex.Message.ToString());
         throw ex;
     }
 }
Esempio n. 2
0
 public struCmdWFTransmit(string instanceid, string nodeid, EApprovalOpinion approvalopinion, string opemanid, string approvalreason)
 {
     InstanceID      = instanceid;
     NodeID          = nodeid;
     ApprovalOpinion = approvalopinion;
     OpeManID        = opemanid;
     ApprovalReason  = approvalreason;
 }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// 获取各个审批意见对应的处理脚本
 /// </summary>
 /// <param name="NodeID"></param>
 /// <param name="ApprovalOpinion"></param>
 /// <returns></returns>
 public static string GetApprovalScript(string NodeID, EApprovalOpinion ApprovalOpinion)
 {
     try
     {
         return(CDataHelper.GetData("select [approvescript] from " + CTableName.FlowChartNodeApproveItem + " where node_id='" + NodeID + "' and [approvename]='" + ApprovalOpinion.ToString() + "'"));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary>
 /// 更新审批意见
 /// </summary>
 /// <param name="InstanceID"></param>
 /// <param name="NodeID"></param>
 /// <param name="ApprovalOpinion"></param>
 /// <param name="OpeManID"></param>
 /// <param name="ApprovalReason"></param>
 public static string UpdateApprovalOpinion(string InstanceID, string NodeID, EApprovalOpinion ApprovalOpinion, string OpeManID, string ApprovalReason)
 {
     try
     {
         if (CDataHelper.ExecuteNonQuery("update " + CTableName.FlowChartReceiver + " set [approval_opinion]='" + ApprovalOpinion + "',operate_time='" + DateTime.Now.ToString() + "',approval_status='" + EApprovalStatus.Complete.ToString() + "',approval_reason='" + ApprovalReason + "' where [instance_id]='" + InstanceID + "' and [node_id]='" + NodeID + "' and [user_id]='" + OpeManID + "' and [approval_status]='" + EApprovalStatus.Active.ToString() + "'") < 0)
         {
             WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录实例" + InstanceID + "审批意见异常。审批节点:" + NodeID + ",审批人:" + OpeManID);
             return(WFGlobal.ErrInfo);
         }
         return(WFGlobal.success);
     }
     catch (Exception ex)
     {
         WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录实例" + InstanceID + "审批意见异常。审批节点:" + NodeID + ",审批人:" + OpeManID + ",异常信息:" + ex.Message.ToString());
         return(WFGlobal.ErrInfo);
     }
 }
Esempio n. 6
0
 public string WFTransmit(string InstanceID, string NodeID, EApprovalOpinion ApprovalOpinion, string OpeManID, string ApprovalReason)
 {
     return(WFTransmitDeal(InstanceID, NodeID, ApprovalOpinion, OpeManID, ApprovalReason));
 }