예제 #1
0
        /// <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();
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
        /// <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();
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
                }
            }
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        /// <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);
        }
예제 #9
0
 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);
         }
     }
 }
예제 #10
0
 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);
         }
     }
 }
예제 #11
0
 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);
 }
예제 #12
0
        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);
        }
예제 #13
0
        /// <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);
        }
예제 #14
0
 /// <summary>
 ///当前节点的下级节点数
 /// </summary>
 /// <param name="cNode">当前节点</param>
 /// <returns></returns>
 public int ChildCount(wfActivity cNode)
 {
     return(cNode.ChildCount);
 }
예제 #15
0
 /// <summary>
 /// 获取当前节点的上级节点
 /// </summary>
 /// <param name="cNode">当前节点</param>
 /// <param name="index">索引</param>
 /// <returns></returns>
 public actRule ParentNode(wfActivity cNode, int index)
 {
     return(cNode.ParentNode(index));
 }
예제 #16
0
 /// <summary>
 /// 获取当前节点的子节点
 /// </summary>
 /// <param name="cNode">当前节点</param>
 /// <param name="index">索引</param>
 /// <returns></returns>
 public actRule ChildNode(wfActivity cNode, int index)
 {
     return(cNode.ChildNode(index));
 }
예제 #17
0
 /// <summary>
 /// 添加节点实例到列表
 /// </summary>
 /// <param name="act">活动节点</param>
 public void AddActivity(wfActivity act)
 {
     actList.Add(act);
 }
예제 #18
0
 /// <summary>
 /// 当前节点的上级节点数
 /// </summary>
 /// <param name="cNode">当前节点</param>
 /// <returns></returns>
 public int ParentCount(wfActivity cNode)
 {
     return(cNode.ParentCount);
 }