0

これは私の最後の質問に似ていますが、実際には問題に要約されます。

タスクをスケジュールするシステムを設計しています。ほとんどの場合、繰り返し発生するタスク。たとえば、ユーザーは「床を掃除する」を毎週月曜日、水曜日、金曜日に実行するようにスケジュールできます。

スケジュールから、タスクが特定の日に実行される予定であるかどうかを判断できます。最も重要なのは、タスクが当日に実行される予定であるかどうかを判断できることです。次に、この現在のタスクのリストをワーカーに表示する必要があります(そしてそれをサイト周辺の受話器に送信します)。

次に、ユーザーは、タスクを開始したこと(したがって、状態Task-Startedが必要)と、タスクを完了したとき(Task-Worked)を示します。ワーカーが仕事をうまく行っていない場合、タスクを検査している誰かがタスクを「失敗」して、終了状態のタスク失敗になります。タスクには他の状態もいくつかある可能性がありますが、この質問の範囲にはそれで十分です。

私が疑問に思っているのは、データベースに各タスクオカレンスのインスタンスを作成して、タスクのその特定のインスタンスに対する状態を保存できるようにする必要があるかどうかです。別の見方をすると、データベースに「Due」の初期状態、または「Due-Today」と実際のDateTime(または少なくともOpportunityウィンドウのDateTime)を作成していると思います。タスクを実行します)。

ただし、この状態は、「今日の」タスクリストを生成する場所であるため、いつでも導出できます。したがって、正規化エラーのように感じます。とにかく導出できるデータを繰り返しているように感じます。

長所:

  • これにより、生成された「期限」タスクに正確な日時を設定できるため、将来の日にのみ影響するスケジュールの変更からタスクを保護できます(ただし、Schedule-Historyテーブルを使用すると、古いデータを取得できます)。

  • その日に何か特別なことが起こった場合に備えて、その特定の日のスケジュールを微調整することができます。

  • それは、それを導出するのではなく、データベースに正式な状態を作成します(私はそれを作り上げましたか?)。

短所:

  • これらのインスタンスを生成するには、バックグラウンドプロセスが必要になります(または、表示方法に応じて、「Due」または「Due-Today」状態を生成します)。

私の問題はこれに帰着すると思います:

1)スケジュールが正確な日時のリストである場合、各エントリはタスク自体を記述しているため、問題はありません。それは事実です:この日時でのこのタスク。そして、そのタスクが完了すると、それに対する事実を保存します。

2)ただし、定期的なスケジュールでは、実際の発生を説明するのではなく、各タスクをいつ行うべきかを説明するだけです。

それが理にかなっていることを願っています。考え?

4

2 に答える 2

1

これをタスク スケジュールとしてモデル化します。これには、タスクが発生する日と次の期日などの情報が含まれます。

毎日のバックグラウンド ジョブとして、スケジュールを確認し、それらが今日行われるかどうかを判断します。その場合は、タスクレコードを作成し、次の期日を更新します。次の期日は非正規化ですが、生活が楽になると思います。それは、スケジューリング ロジックがどの程度複雑になるか、および保有するデータの量によって異なります。

タスク テーブルは、タスク スケジュールの子です。タスク テーブルには、期日、ステータス、割り当て先などが含まれます。同時に、これらのタスクをハンドセットに送信します (最初のジョブが正常に完了したときに開始される 2 番目のジョブでこれを行います)。

于 2012-06-11T04:00:04.547 に答える
0

「タスク」と「タスク インスタンス」を分離しますが、タスクの期限が来ても新しいインスタンスを生成しません。

開始時に生成します (終了時間と成功ステータスは NULL のままにします)。タスク インスタンスが終了したら、これらの NULL を具体的な値に置き換えます。

そのため、バックグラウンド プロセスは必要ありませんが、次のタイミングをいつでも判断できます。

  • 期日タスクが開始されていません (インスタンス テーブルに行がありません)
  • または開始されたタスクが終了していない (NULL 終了時刻)
  • または、完了したタスクがどの程度成功したか (終了時刻が NULL でないタスク インスタンスの成功ステータスを調べることによって)。
于 2012-06-09T22:41:46.093 に答える