/// <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="WFID"></param> /// <param name="InstanceID"></param> /// <param name="NodeID"></param> /// <param name="NextNodeID"></param> public static string NodeTransfer(string InstanceID, string NodeID, string NextNodeID) { try { if (CNodeManager.IsNodeThroughEnable(InstanceID, NextNodeID)) { //记录流转历史 if (CDataHelper.ExecuteNonQuery("insert into " + CTableName.FlowChartHistory + "(instance_id,node_id,next_node_id) values('" + InstanceID + "','" + NodeID + "','" + NextNodeID + "')") < 0) { WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录工作流实例流转节点失败,工作流实例ID:" + InstanceID + ",开始节点ID:" + NodeID + ",结束节点ID:" + NextNodeID); return(WFGlobal.ErrInfo); } string NodeType = CNodeManager.GetNodeType(NextNodeID); if (NodeType == CNodeType.SwitchType) { return(GoNextNodesFromSwitchNode(InstanceID, NextNodeID)); } else if (NodeType == CNodeType.ProcessType) { RunProcessScript(InstanceID, NextNodeID); return(CNodeManager.GoNextNodesFromOtherNode(InstanceID, NextNodeID)); } else if (NodeType == CNodeType.ApproveType || NodeType == CNodeType.StartType) { return(CNodeManager.PutDownNodeApprover(InstanceID, NextNodeID)); } else if (NodeType == CNodeType.EndType) { return(CInstanceManager.SetInstanceComplete(InstanceID)); } } return(WFGlobal.success); } catch (Exception ex) { WFGlobal.ErrInfo = CLog.PutDownErrInfo("节点流转异常,工作流实例ID:" + InstanceID + ",开始节点ID:" + NodeID + ",结束节点ID:" + NextNodeID); return(WFGlobal.ErrInfo); } }