0

这与我的上一个问题相似,但它更归结为问题。

我正在设计一个系统来安排任务;大多数时候重复的任务。例如,用户可以将“扫地”安排在每周的周一、周三和周五进行。

我可以从日程表中判断一项任务是否应该在任何特定的日子完成,最重要的是我可以判断它是否应该在当天完成。然后,我必须向工作人员显示当前任务的列表(并将其发送到站点周围的手机)。

然后用户表明他们已经开始了任务(所以我们需要一个状态Task-Started)以及他们何时完成了一项任务(Task-Worked)。如果工人没有很好地完成工作,检查任务的人可以“失败”它,进入结束状态任务失败。一个任务也可以有其他一些状态,但这对于这个问题的范围来说应该足够了。

我想知道是否应该在数据库中创建每个任务发生的实例,从而允许我针对该任务的特定实例存储状态。我想另一种看待它的方式是我在数据库中创建“到期”的初始状态,或“今天到期”以及它到期的实际日期时间(或至少是机会窗口的日期时间)做任务)。

但是-无论如何,这种状态总是可以派生的,因为这是我从中生成“今天的”任务列表的地方,所以它确实感觉像是一个规范化错误——感觉就像我在重复无论如何都可以派生的数据。

优点:

  • 它将允许生成的“到期”任务具有准确的日期时间,从而保护它免受只会影响未来几天的时间表的更改(尽管授予我的 Schedule-History 表允许我获取旧数据)。

  • 可以调整特定日期的日程安排,以防当天发生异常情况。

  • 它在数据库中创建了一个正式的状态,而不是派生它(我只是编造的吗?)。

缺点:

  • 它需要一个后台进程来生成这些实例(或生成“Due”或“Due-Today”状态,具体取决于您如何看待它)。

我想我的问题归结为:

1) 如果日程表只是一个确切的日期时间列表,则没有问题,因为每个条目都描述了任务本身。事实是:这个日期时间的这个任务。一旦该任务完成,我们就会针对它存储事实。

2)然而,重复计划只是描述了每个任务应该在什么时候,而不是描述实际发生的情况。

我希望这有点道理。想法?

4

2 回答 2

1

我会将其建模为task schedule,其中将包含诸如任务发生在哪一天以及下一次到期时间等信息。

作为每天的后台作业,您将查看时间表并确定它们是否在今天发生。如果是这样,您将创建一个任务记录,并更新下一个截止日期。下一个截止日期是一种非规范化,但我认为它让生活更轻松。这取决于您的调度逻辑变得多么复杂以及您拥有多少数据。

任务表是任务计划的子表。任务表将包含到期日期、状态、分配给等。同时,您会将这些任务发送到手机(我会在第一个任务成功完成后启动的第二个任务中执行此操作)。

于 2012-06-11T04:00:04.547 回答
0

将“任务”和“任务实例”分开,但不要在任务到期时生成新实例。

在启动时生成它(并将结束时间和成功状态保留为 NULL)。任务实例完成后,将这些 NULL 替换为具体值。

因此,不需要后台进程,但您始终可以确定何时:

  • 到期任务未启动(实例表中无行)
  • 或启动的任务尚未完成(NULL 结束时间)
  • 或者完成的任务有多成功(通过检查结束时间为非空的任务实例的成功状态)。
于 2012-06-09T22:41:46.093 回答