0

キッチンの掃除、掃除機の掃除など、家庭内のタスクを管理するための Android アプリを開発しています ...

中央データベースからデータを取得して保存するために、Json ベースの API を実装しました。

すべての世帯には、1 人以上の居住者がいる可能性があります。また、任意の数のタスクを含めることができます。

タスク処理は、私の質問が関連する場所です。タスクの期日は、世帯内の各居住者に均等に分配され、すべての居住者が自分のタスクを表示して完了することができる必要があります。

私の現在の設計では、次のプロパティがあります: Id(int)、Label(String)、Description(String)、Start_date(date)、Start_resident_id(int)、household_id(int)、week_interval(int)、weekdays(int)

start_date: タスクが作成された日付 (期限の計算に必要)

week_interval: このタスクは X 週間ごとに実行する必要があります (毎週 1 回、毎月 4 回など)。

weekdays: タスクを実行する曜日 (例: 14 は MON、THU、1357 は MON、WED、FRI、SUN を意味します)

居住者がタスクを完了としてマークするとすぐに作成される task_status モデルもあります。

task_status: id(int)、task_id(int)、status(int)、resident_id(int)、due_date(date)、comment(string)

ステータス: 1 = 完了、2 = スキップ

Residence_id = タスクを完了した居住者の外部キー

  1. 各タスクと居住者の期日を計算する最良の方法は何ですか?

  2. これは、タスクを完了としてマークするためのこれらの task_status エントリを持つ良い設計ですか?

4

1 に答える 1

0

モデルは基本的に私には正しいようです。繰り返しタスクの定義があり、特定の実行を表すこのタスクのインスタンスがあります。

納期はちょっとわかりません。それを使って何を表現したいですか?タスクの期日は 2 通り考えられます。

  1. タスクは開始されましたが、まだ完了しておらず、タスクの次の反復が開始されようとしています。しかし、いつ処刑されるべきですか?正確に次の反復が開始されるのはいつですか? スケジュールされた開始から x 日後にタスクを終了する必要があるように、それをタスク定義に含めたいと思うかもしれません。
  2. しばらくの間、誰もタスクを開始していません。したがって、タスク自体はもう一度開始される予定です。しかし、反復ごとにタスクのインスタンスを自動的に作成している場合、これは冗長になります。

保存されたデータから期日を削除することも考えられます。開始日と間隔があるため、いつでも動的に期日を計算できます。もちろん、タスク定義を変更すると、古い実行インスタンスが無意味になる可能性があります。

したがって、最初の期日の計算はタスク自体に対するものです。最後に (日付ごとに) 完了したタスクの実行を取得し、その時点から現在までの時間間隔を計算します。これが定義された間隔よりも大きい場合、タスクは再度開始される予定です。2 番目の計算は、タスクの特定の実行用です。タスクの未完了の実行を取り、その開始日と現在の日付を、タスクを完了するために必要な事前定義された時間または次の実行の予測開始日と比較します。インスタンスの作成方法と「期限」をどのように指定するかによって異なります。

タスクのスケジュールを柔軟に設定したい場合は、より複雑になる可能性があります: スケジュールされた日の前後にタスクが開始された場合はどうなりますか? 新しい処刑が予定されている直前にキッチンの掃除を終えたらどうしますか? キッチンを2日連続で掃除するのは理にかなっていますか?

于 2013-06-01T09:28:00.160 に答える