/// <summary>
        /// 记录新发起的工作流实例
        /// </summary>
        /// <param name="WFName">工作流名称</param>
        /// <param name="WFDataID">工作流实例对应的数据的ID</param>
        /// <param name="OpeManID">操作人</param>
        /// <param name="WFID">工作流ID</param>
        /// <param name="NewInstanceID">新工作流实例ID</param>
        public static string PutDownNewInstance(string WFName, string WFDataID, string OpeManID, string WFID, string NewInstanceID)
        {
            try
            {
                string WFVersion = CWFManager.GetLastVersion(WFName);
                if (WFVersion == null || WFVersion == "")
                {
                    CInstanceManager.SetInstanceError(NewInstanceID, "缺少工作流版本号");
                    WFGlobal.ErrInfo = CLog.PutDownErrInfo("工作流实例" + NewInstanceID + "缺少工作流版本号");
                    return(WFGlobal.ErrInfo);
                }

                if (CDataHelper.ExecuteNonQuery("insert into " + CTableName.FlowChartInstance + "(flowchart_id,flowchart_version,instance_id,cre_date,cre_man,instance_status) values('" + WFID + "','" + WFVersion + "','" + NewInstanceID + "','" + DateTime.Now.ToString() + "','" + OpeManID + "','" + EInstanceStatus.Active.ToString() + "')") < 0)
                {
                    WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录工作流实例信息失败。");
                    return(WFGlobal.ErrInfo);
                }

                if (CDataHelper.ExecuteNonQuery("insert into " + CTableName.FlowChartPars + "(instance_id,keyvalue) values('" + NewInstanceID + "','" + WFDataID + "')") < 0)
                {
                    WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录工作流数据信息失败。");
                    return(WFGlobal.ErrInfo);
                }
                return(WFGlobal.success);
            }
            catch (Exception ex)
            {
                WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录工作流实例操作异常。工作流名称:" + WFName + ",数据ID:" + WFDataID + ",发起人ID:" + OpeManID + ",工作流ID:" + WFID + ",异常信息:" + ex.Message.ToString());
                return(WFGlobal.ErrInfo);
            }
        }
 /// <summary>
 /// 更新审批人的审批状态
 /// </summary>
 /// <param name="InstanceID"></param>
 /// <param name="NodeID"></param>
 /// <param name="AppStu">审批状态</param>
 public static string UpdateApprovalStatus(string InstanceID, string NodeID, string ApproverID, EApprovalStatus AppStu)
 {
     try
     {
         if (CDataHelper.ExecuteNonQuery("update " + CTableName.FlowChartReceiver + " set [approval_status]='" + AppStu.ToString() + "' where instance_id='" + InstanceID + "' and node_id='" + NodeID + "' and user_id='" + ApproverID + "'") < 0)
         {
             WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新审批状态操作失败。实例ID:" + InstanceID + ",节点ID:" + NodeID + ",审批人ID:" + ApproverID);
             return(WFGlobal.ErrInfo);
         }
         return(WFGlobal.success);
     }
     catch (Exception ex)
     {
         WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新审批状态操作失败。实例ID:" + InstanceID + ",节点ID:" + NodeID + ",审批人ID:" + ApproverID + ",异常信息:" + ex.Message.ToString());
         return(WFGlobal.ErrInfo);
     }
 }
 /// <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 static string UpdateInstanceMessage(string InstanceID, string ErrorMessage)
 {
     try
     {
         if (CDataHelper.ExecuteNonQuery("update " + CTableName.FlowChartInstance + " set [instance_message]='" + ErrorMessage + "' where instance_id='" + InstanceID + "'") < 0)
         {
             WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新工作流实例信息操作失败。实例ID:" + InstanceID);
             return(WFGlobal.ErrInfo);
         }
         return(WFGlobal.success);
     }
     catch (Exception ex)
     {
         WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新工作流实例信息操作失异常。实例ID:" + InstanceID + ",异常信息:" + ex.Message.ToString());
         return(WFGlobal.ErrInfo);
     }
 }
 public static string UpdateInstanceStatus(string InstanceID, EInstanceStatus InsStu)
 {
     try
     {
         if (CDataHelper.ExecuteNonQuery("update " + CTableName.FlowChartInstance + " set [instance_status]='" + InsStu.ToString() + "' where instance_id='" + InstanceID + "'") < 0)
         {
             WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新实例状态操作失败。实例ID:" + InstanceID);
             return(WFGlobal.ErrInfo);
         }
         return(WFGlobal.success);
     }
     catch (Exception ex)
     {
         WFGlobal.ErrInfo = CLog.PutDownErrInfo("更新实例状态操作异常。实例ID:" + InstanceID + ",异常信息:" + ex.Message.ToString());
         return(WFGlobal.ErrInfo);
     }
 }
        /// <summary>
        /// 记录节点的审批人
        /// </summary>
        /// <param name="InstanceID"></param>
        /// <param name="NodeID"></param>
        /// <param name="OpeManID"></param>
        /// <param name="ApprovalNum">表示该节点第几次审批</param>
        public static string PutDownApprover(string InstanceID, string NodeID, string OpeManID, int ApprovalNum, string ApprovalNote)
        {
            try
            {
                if (CDataHelper.ExecuteNonQuery("insert into " + CTableName.FlowChartReceiver + "(instance_id,node_id,user_id,operate_time,approval_status,approval_num,approval_note) values('" + InstanceID + "','" + NodeID + "','" + OpeManID + "','" + DateTime.Now.ToString() + "','" + EApprovalStatus.Active.ToString() + "','" + ApprovalNum.ToString() + "','" + ApprovalNote + "')") < 0)
                {
                    WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录审批人操作失败。工作流实例ID:" + InstanceID + ",节点ID:" + NodeID + ",操作人ID:" + OpeManID + ",操作次数:" + ApprovalNum.ToString());
                    return(WFGlobal.ErrInfo);
                }

                return(WFGlobal.success);
            }
            catch (Exception ex)
            {
                WFGlobal.ErrInfo = CLog.PutDownErrInfo("记录审批人操作异常。工作流实例ID:" + InstanceID + ",节点ID:" + NodeID + ",操作人ID:" + OpeManID + ",操作次数:" + ApprovalNum.ToString() + ",异常信息:" + ex.Message.ToString());
                return(WFGlobal.ErrInfo);
            }
        }
Beispiel #7
0
        /// <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);
            }
        }