Esempio n. 1
0
        /// <summary>
        /// 获取下一个要到达的定义路径.
        /// 要分析如下几种情况:
        /// 1, 当前节点不存在队列里面,就返回第一个.
        /// 2, 如果当前队列为空,就认为需要结束掉, 返回null.
        /// 3, 如果当前节点是最后一个,就返回null,表示要结束流程.
        /// </summary>
        /// <param name="workid">当前工作ID</param>
        /// <param name="currNodeID">当前节点ID</param>
        /// <returns>获取下一个要到达的定义路径,如果没有就返回空.</returns>
        public static TransferCustom GetNextTransferCustom(Int64 workid, int currNodeID)
        {
            TransferCustoms ens = new TransferCustoms();

            ens.Retrieve(TransferCustomAttr.WorkID, workid, TransferCustomAttr.Idx);
            if (ens.Count == 0)
            {
                return(null);
            }

            //寻找当前节点的下一个.
            bool isMeet = false;

            foreach (TransferCustom item in ens)
            {
                if (item.FK_Node == currNodeID)
                {
                    isMeet = true;
                    continue;
                }

                if (isMeet == true)
                {
                    return(item);
                }
            }

            if (currNodeID.ToString().EndsWith("01") == true)
            {
                return((TransferCustom)ens[0]);
            }
            return(null);
            // return null;
        }
        /// <summary>
        /// 获取下一个要到达的定义路径.
        /// 要分析如下几种情况:
        /// 1, 当前节点不存在队列里面,就返回第一个.
        /// 2, 如果当前队列为空,就认为需要结束掉, 返回null.
        /// 3, 如果当前节点是最后一个,就返回null,表示要结束流程.
        /// </summary>
        /// <param name="workid">当前工作ID</param>
        /// <param name="currNodeID">当前节点ID</param>
        /// <returns>获取下一个要到达的定义路径,如果没有就返回空.</returns>
        public static TransferCustom GetNextTransferCustom(Int64 workid, int currNodeID)
        {
            TransferCustoms ens = new TransferCustoms();

            ens.Retrieve(TransferCustomAttr.WorkID, workid, TransferCustomAttr.Idx);
            if (ens.Count == 0)
            {
                return(null);
            }

            /*获取最后一个*/
            TransferCustom tEnd = ens[ens.Count - 1] as TransferCustom;

            if (tEnd.FK_Node == currNodeID)
            {
                return(null);    //表示要结束,因为这是最后一个环节.
            }
            // 开始找, 找到当前节点的下一个.
            bool isRec = false;

            foreach (TransferCustom en in ens)
            {
                if (en.FK_Node == currNodeID)
                {
                    isRec = true;
                    continue;
                }
                if (isRec)
                {
                    return(en);
                }
            }

            //如果没有找到,就返回最后一个.
            return((TransferCustom)ens[0]);
        }