コード例 #1
0
 /// <summary>
 /// remember event item work will be into process
 /// INが Eventで予約されている事を 各種制約で考慮できるように覚えておく
 /// </summary>
 /// <param name="now"></param>
 public void RememberWorkWillBeIn(DateTime now, JitStage.WorkEventQueue.Item ei)
 {
     foreach (var cio in Cios)
     {
         var stage = ei.Work.FindStage();
         stage.SetLastInTime(ei.Work.Next, cio, now);        // save in-time (for Span constraint)
         stage.AddWorkInReserve(ei.Work.Next, cio, ei.Work); // reserve work-in (for Max constraint)
     }
 }
コード例 #2
0
        /// <summary>
        /// caluclate next confirmation timing
        /// Span制約中のワークに対して、待ち時間を計算する
        /// </summary>
        /// <param name="Events"></param>
        /// <param name="ei"></param>
        /// <param name="work"></param>
        /// <param name="Now"></param>
        /// <returns></returns>
        public override TimeSpan GetWaitTime(JitStage.WorkEventQueue.Item ei, DateTime Now)
        {
            var ret = MathUtil.Min(
                TimeSpan.FromDays(999.9),
                ei.Work.Current.Stage.GetLastInTime(ei.Work.Next, this) + Span - Now
                );

            if (ret < TimeSpan.FromSeconds(1))
            {
                ret = PorlingSpan;
            }
            return(ret);
        }
コード例 #3
0
        /// <summary>
        /// interval time to check next confirmation timing
        /// 制約中のワークに対し、待ち時間を計算する
        /// </summary>
        /// <returns></returns>
        public override TimeSpan GetWaitTime(JitStage.WorkEventQueue.Item ei, DateTime Now)
        {
            var nextexit = ei.Work.FindStage().Events.Find(ei.Work.Next, EventTypes.Out, ":Work");

            if (nextexit != null)
            {
                var ret = MathUtil.Min(TimeSpan.FromDays(999.9), nextexit.Value.Work.ExitTime - Now);
                if (ret < TimeSpan.FromSeconds(1))
                {
                    ret = TimeSpan.FromMinutes(1);
                }
                return(ret);
            }
            else
            {
                return(TimeSpan.FromSeconds(0));    // OUT→INの処理待ちのケースなので、同時刻(IN完了)を指定する
                                                    // Note: 後工程が最終工程で、ワーク詰まって、IN制約で入れないとすると、無限ループになる
            }
        }
コード例 #4
0
 /// <summary>
 /// interval time of next confirmation timing when the work was in waiting condition
 /// 横工程からInできない場合、次に確認するまで待つ時間
 /// </summary>
 /// <param name="Events"></param>
 /// <param name="ei"></param>
 /// <param name="Now"></param>
 /// <returns></returns>
 public override TimeSpan GetWaitTime(JitStage.WorkEventQueue.Item ei, DateTime Now)
 {
     return(PorlingSpan);
 }