/// <summary> /// 从数据库读流程节点前依赖关系 /// </summary> /// <param name="obj">流程信息</param> private void GetActPreRule(FlowChart obj) { string sCmd = "SELECT F_DEPNT_ID,F_DEPNT_ACT_ID,F_DEPNT_ACT_STATUS,F_PROC_ID " + "FROM WF_PRE_RULE where F_PROC_ID=" + obj.ID; OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = sCmd; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { string currID = dr.IsDBNull(0) ? "" : dr.GetValue(0).ToString(); //F_DEPNT_ID string pID = dr.IsDBNull(1) ? "" : dr.GetValue(1).ToString(); //F_DEPNT_ACT_ID string pStatus = dr.IsDBNull(2) ? "" : dr.GetString(2); //F_DEPNT_ACT_STATUS //检索列表 wfActivity currAct = obj.GetActivityByID(currID); wfActivity pAct = obj.GetActivityByID(pID); if ((currAct != null) && (pAct != null)) { currAct.AddParent(pAct, pStatus); } } dr.Close(); dr.Dispose(); cmd.Dispose(); }
private void GetSelectNodes(FlowChart obj) { string sCmd = "SELECT F_ACT_ID,F_SELECT_ID " + "FROM WF_SELECT_ROUNTING where F_PROCESS_ID=" + obj.ID; OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = sCmd; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { string currID = dr.IsDBNull(0) ? "" : dr.GetValue(0).ToString(); //F_ACT_ID string sID = dr.IsDBNull(1) ? "" : dr.GetValue(1).ToString(); //F_SELECT_ID //检索列表 wfActivity currAct = obj.GetActivityByID(currID); wfActivity sAct = obj.GetActivityByID(sID); if ((currAct != null) && (sAct != null)) { currAct.SelectNodes.Add(sID); } } dr.Close(); dr.Dispose(); cmd.Dispose(); }
/// <summary> /// 从数据库读流程节点分派关系 /// </summary> /// <param name="obj"></param> private void GetActRoutingRule(FlowChart obj) { string sCmd = "SELECT F_PRE_ACT_ID,F_CURR_ACT_ID,F_COMPLETION_FLAG,F_NEXT_ACT_ID_LIST,F_PRE_DEPNT_SET,F_PROC_ID " + "FROM WF_ROUTING_RULE where F_PROC_ID=" + obj.ID; OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = sCmd; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { string currID = dr.IsDBNull(0) ? "" : dr.GetValue(0).ToString(); //F_PRE_ACT_ID string pID = dr.IsDBNull(1) ? "" : dr.GetValue(1).ToString(); //F_CURR_ACT_ID string pStatus = dr.IsDBNull(2) ? "" : dr.GetString(2); //F_COMPLETION_FLAG //检索列表 wfActivity currAct = obj.GetActivityByID(currID); wfActivity pAct = obj.GetActivityByID(pID); if ((currAct != null) && (pAct != null)) { currAct.AddChild(pAct, pStatus); } } dr.Close(); dr.Dispose(); cmd.Dispose(); }
/// <summary> /// 从数据库读流程节点信息 /// </summary> /// <param name="obj"></param> private void GetFlowchartActs(FlowChart obj) { string sCmd = "SELECT F_ID,F_PROCESS_ID,F_NAME,F_TIME_ALLOWED,F_RULE_APPLIED," + "F_EX_PRE_RULE_FUNC,F_EX_POST_RULE_FUNC,F_ACT_TYPE,F_OR_MERGE_FLAG,F_NUM_VOTE_NEEDED," + "F_AUTO_EXEC,F_ACT_DESC FROM WF_ACTIVITY where F_PROCESS_ID=" + obj.ID; OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = sCmd; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { //数据实例化 wfActivity newact = new wfActivity(); newact.ID = dr.GetValue(0).ToString(); //F_ID newact.Name = dr.IsDBNull(2) ? "" : dr.GetString(2); //F_NAME newact.TimeAllowed = dr.IsDBNull(3) ? 0: dr.GetInt32(3); //F_TIME_ALLOWED newact.ActType = dr.IsDBNull(7) ? "" : dr.GetString(7); //F_ACT_TYPE newact.OrMergeFlag = dr.IsDBNull(8) ? 0 : (int)dr.GetInt16(8); //F_OR_MERGE_FLAG newact.NumVotesNeeded = dr.IsDBNull(9) ? 0 : (int)dr.GetInt16(9); //F_NUM_VOTE_NEEDED newact.AutoExecutive = dr.IsDBNull(10) ? false : dr.GetInt16(10) == 1; //F_AUTO_EXEC newact.Desc = dr.IsDBNull(11) ? "" : dr.GetString(11); //F_ACT_DESC newact.PreRule = dr.IsDBNull(5) ? "" : dr.GetString(5); //添加到fchart 活动列表 obj.AddActivity(newact); //读授权信息 GetActAssgn(newact); } dr.Close(); dr.Dispose(); cmd.Dispose(); }
/// <summary> /// 返回对象 /// </summary> /// <param name="actID"></param> /// <param name="instanceID"></param> /// <param name="todoID"></param> /// <returns></returns> private wfActivity ResultActByID(string actID, string instanceID, string todoID) { string sSQL = "select F_ID, F_PROCESS_ID, F_NAME, F_TIME_ALLOWED, F_RULE_APPLIED, " + "F_EX_PRE_RULE_FUNC, F_EX_POST_RULE_FUNC, F_ACT_TYPE," + " F_OR_MERGE_FLAG, F_NUM_VOTE_NEEDED, F_AUTO_EXEC, F_ACT_DESC " + "from WF_ACTIVITY where F_ID=" + actID; IDataReader dr = dbData.getDataReader(ConnStr, sSQL); if ((dr != null) && dr.Read()) { wfActivity act = new wfActivity(); act.ID = actID; act.Name = dr.GetString(2); act.TimeAllowed = dr.GetInt32(3); act.ActType = dr.GetString(7); act.Desc = dr.GetString(11); act.InstanceID = instanceID; act.TodoID = todoID; dr.Close(); return(act); } return(null); }
/// <summary> /// 获取活动授权用户信息 /// </summary> /// <param name="act"></param> private void GetActAssgn(wfActivity act) { OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "select F_BASED_ON,F_USER_ID from WF_ASSGN_RULE where F_ACT_ID=" + act.ID; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { if (!dr.IsDBNull(1)) { string uid = dr.GetString(1); string utype = dr.GetString(0); string uName = ""; if (utype == wfConsts.ASSIGN_TYPE_USER) { uName = dbData.UserNameFromUserCode(ConnStr, uid); } else { uName = dbData.RoleNameFromRoleID(ConnStr, uid); } act.UserList.Add(uid, utype, uName); } } }
/// <summary> /// 添加上级节点 /// </summary> /// <param name="obj"></param> public void AddParent(wfActivity obj, string StrRule) { actRule rule = new actRule(); rule.Node = obj; rule.Rule = StrRule; Parents.Add(rule); }
/// <summary> /// 添加下层节点 /// </summary> /// <param name="obj"></param> public actRule AddChild(wfActivity obj, string StrRule) { actRule rule = new actRule(); rule.Node = obj; rule.Rule = StrRule; Childs.Add(rule); return(rule); }
public void RemoveChild(wfActivity obj) { for (int i = 0; i < Childs.Count; i++) { actRule rule = (actRule)Childs[i]; if (rule.Node == obj) { rule.Node = null; Childs.RemoveAt(i); } } }
public void RemoveParent(wfActivity obj) { for (int i = 0; i < Parents.Count; i++) { actRule rule = (actRule)Parents[i]; if (rule.Node == obj) { rule.Node = null; Parents.RemoveAt(i); } } }
public wfActivity GetActivityByID(string actID) { for (int i = 0; i < actList.Count; i++) { wfActivity obj = (wfActivity)actList[i]; if (obj.ID == actID) { return(obj); } } return(null); }
private wfActivity getEndNode() { for (int i = 0; i < actList.Count; i++) { wfActivity act = (wfActivity)actList[i]; if (act.ActType == ACT_TYPE_END) { return(act); } } return(null); }
/// <summary> /// 用户是否具有审批流程任务 /// </summary> /// <param name="processID"></param> /// <param name="EntityID"></param> /// <param name="UserCode"></param> /// <returns></returns> public wfActivity GetNextTask(string processID, string EntityID, string UserCode) { int taskStatus = CheckTaskStatus(processID, EntityID); wfActivity rc = null; if (taskStatus == 0) //未开始,检查用户是否有启动流程的权限 { rc = GetAndCheckStart(processID, UserCode); } else if (taskStatus == 2) //正在进行,检查Todolist { rc = GetAndCheckTodoList(processID, EntityID, UserCode); } return(rc); }
/// <summary> ///当前节点的下级节点数 /// </summary> /// <param name="cNode">当前节点</param> /// <returns></returns> public int ChildCount(wfActivity cNode) { return(cNode.ChildCount); }
/// <summary> /// 获取当前节点的上级节点 /// </summary> /// <param name="cNode">当前节点</param> /// <param name="index">索引</param> /// <returns></returns> public actRule ParentNode(wfActivity cNode, int index) { return(cNode.ParentNode(index)); }
/// <summary> /// 获取当前节点的子节点 /// </summary> /// <param name="cNode">当前节点</param> /// <param name="index">索引</param> /// <returns></returns> public actRule ChildNode(wfActivity cNode, int index) { return(cNode.ChildNode(index)); }
/// <summary> /// 添加节点实例到列表 /// </summary> /// <param name="act">活动节点</param> public void AddActivity(wfActivity act) { actList.Add(act); }
/// <summary> /// 当前节点的上级节点数 /// </summary> /// <param name="cNode">当前节点</param> /// <returns></returns> public int ParentCount(wfActivity cNode) { return(cNode.ParentCount); }