カレンダーとスケジューリング アプリケーションを作成しようとしています。短納期の予約で構成されるデータセットがあります。開始時間、期間、期日/時間など。私たちの意図は、作業ブロックの開始時間と終了時間を指定してタスク リストを生成するアプリケーションを作成することです。
ジョブの優先順位は次のとおりです。
- 今日の特定の時間に締め切り
- 締め切りは今日で、特定の時間はありません
- 期限が将来の日付で、昇順で並べ替えられます
- 期日なし
- 将来の開始日 (レポートから除外)
アプリケーションの実行時に、勤務シフトの開始時刻と終了時刻が入力されます。その時間ブロックには、優先順位に従ってジョブが自動的に入力されます。
検討:
Job01; Duration 10; Start 01/01; Due 01/02 1500;
Job02; Duration 60; Start 01/01; Due 01/02;
Job03; Duration 45; Start 01/08; Due 01/08 1500;
Job04; Duration 30; Start 01/09; Due 01/09 1500;
Job05; Duration 30; Start 12/31; ;
Job06; Duration 60; Start 12/28; ;
Job07; Duration 60; Start 01/04; ;
Job08; Duration 60; Start 01/04; ;
Job09; Duration 30; Start 01/01; Due 01/03 1200;
Job10; Duration 10; Start 01/01; Due 01/05 1700;
2002 年 1 月には、これらの 10 個のジョブが次の順序で優先されます01-02-09-10-05-06
。ジョブ03-04-07-08
は、将来の開始日のために除外されます。
考えてみてください: 01/02 に、私は 4 時間シフトでオフィスに来て、1200-1600
このデータをスケジューラに入力します。
そこから、次の魔法を起こす必要があります。
- 私の開始時刻から、最優先ジョブを追加します。
- ジョブが特別にスケジュールされたジョブである場合は、その時間を保持して、他のジョブがそれを上書きしないようにします。
- 特定の時間を持つすべてのジョブがカレンダーに表示されたら、カレンダーがいっぱいになるまで、最初の空いているスロットから予定を入力し続け、その後停止します。
そのロジックに従って、データがどのようにスケジュールを埋めるかを次に示します。
Job01 - 1500-1510
Job02 - cannot fit in the 1510-1500 slot, so it populates 1200-1300
Job05 - 1300-1330
Job06 - 1330-1430
Job09 - 1430-1500
Job10 - 1510-1520
これまでのところ、優先順位付けのロジックは問題なく機能しています。スケジュールの最初のレコードを適切にキャプチャできます。しかし、その後、私は、特に特定のタイムスロットを保持して何も上書きしないようにする方法、および開始時刻と終了時刻を超えないようにする方法について、思いがけない部分で迷っています。カレンダーを設定するメソッドを構造化する効果的な方法に苦労しています。15 分のバケットの配列を作成し、タスクのリストを反復処理しながらそれらに予定を入力しますか? イベントをスケジュールし、スケジューラを介して別のイベントを渡すたびに、どうにかしてnewStartTime
and を渡してトップに戻るのでしょうか? newEndTime
イベントは記憶に保持されますか?または、特定のスロットに入力するときにデータベースに書き込まれますか? Java には既にこれを行う定義済みのクラスがありますが、私はそれを見逃しましたか? くそっ…恥ずかしいだろう…
私は今これに近づきすぎており、良い戦略を視覚化するのに苦労しています. 提案、観察、および一般化された疑似コードは役に立ちます。