/// <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; } }
public struCmdWFTransmit(string instanceid, string nodeid, EApprovalOpinion approvalopinion, string opemanid, string approvalreason) { InstanceID = instanceid; NodeID = nodeid; ApprovalOpinion = approvalopinion; OpeManID = opemanid; ApprovalReason = approvalreason; }
/// <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="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); } }
public string WFTransmit(string InstanceID, string NodeID, EApprovalOpinion ApprovalOpinion, string OpeManID, string ApprovalReason) { return(WFTransmitDeal(InstanceID, NodeID, ApprovalOpinion, OpeManID, ApprovalReason)); }