/// <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]); }