如何建模和跟踪PHP中的目标需求

时间:2010-08-04 03:04:21

标签: php zend-framework models requirements business-logic

我正在使用 Zend Framework 构建一个webapp,我需要建模逻辑或跟踪一些与跟踪目标进度有关的逻辑。

让我用示例目标来说明

  

USER 需要完成全部以下三项:
  A)活动一   B)活动二   C)活动三    USER 需要完成一次以下内容:
  D)活动四   E)活动五   F)活动六

完成第一组中的所有三个和第二组中的一个后,USER完成了该目标。我将如何在PHP 中对进行建模,以便webapp知道目标已经完成以及如何将数据存储在数据库中?

要明确,会有很多不同类型的目标,但这些目标在本质上都非常相似。

1 个答案:

答案 0 :(得分:3)

假设 A,B& C D,E,& F 将始终属于目标中的特定组,我会这样设计:

Goal::isComplete()
{
  foreach (Group)
  {
    switch (Group::type())
    {
      case "all":
        TRUE if all complete
        break

      case "any":
        TRUE if any complete
        break;
    }
  }

  if all TRUE
    return TRUE
}

或者用英语......

然后,您可以将所有活动存储在“活动”表中,并将它们所属的组定义为“组”表的简单ID引用。活动完成后,可以在DB中进行标记。

要检查已完成的目标,您只需查找目标所需的每个组。每个组可以是“全部”或“任何”(或其他类似的选项,如“min-2”),这将告诉脚本使用活动完成检查的内容。然后,每个组可以根据其活动返回TRUE或FALSE。假设所有组都是必需的,那么目标很容易被识别为完成或不完整。

数据库可能如下所示:

Activities
- id
- group_id
- name
- completed
- [details about activitiy]

Groups
- id
- goal_id
- type  (ENUM: 'any', 'all')
- completed
- [details about group]

Goals
- id
- completed
- [details about goal]

每当更新活动或遗漏活动并且其值始终动态计算出来时,需要主动更新组和目标中的已完成值。

这是否有意义并按照您的要求行事?