我正在尝试建立管理系统的域模型。我在这个系统中有以下类型的人:

employee
manager
top mananger

我决定定义一个 User, , 从哪里 Employee, ManagerTop Manager 将专门从事。现在,我不知道我应该选择哪种专业层次结构。我无法在以下方式之间做出决定:

alt text

或者

alt text

哪个可能是可取的,为什么?

作为一个长期的编码器,每次我尝试进行域模型时,我都必须与尝试思考如何编码的想法作斗争。据我了解,我不应该在域模型中,仅在对象关系中考虑这些问题。我不必在这里考虑代码重复或任何此类详细信息,因此我不能真正选择其他选项。

谢谢

编辑:

我将更加明确:这是一个管理工人假期计划的程序。通过此计划,员工可以选择当年的假期。然后,经理可能会批准每个员工的日子,最终,高级经理应批准或不赞成经理的决定。这是我程序的所有用户都应该能够做到。没有其他任务。

有帮助吗?

解决方案

这主要归结为您如何定义条款的问题。基本问题是,在任何可能的情况下,是否可以将经理替换为员工 - 而不知道 精确的 工作场所的规则是建模的,就不可能以一种或另一种方式对此说。

一个普遍的概念是,至少到一定程度,在捏捏中,经理应该能够完成他的任何下属的工作(至少以下至少一个级别,很可能是两个或三个)。

另一方面,在某些地方制定了许多以工会为导向的规则的地方,可能根本不是这样。即使一个人完全有能力完成工作,规则也可能阻止他完全替代该职位。在某些情况下,这是由认证要求等产生的(例如,经理可能有资格完成这项工作,但所需的认证已完成)或诸如联合规则之类的事情(例如,我的朋友,我的朋友曾经受到谴责,因为他将手电筒和电池从公司商店携带回他的实验室,而不是让工会材料处理程序为他做到这一点)。

其他提示

在现实生活中,经理也是员工。因此,这无疑只是一系列越来越多的专业化链:

User -> Employee -> Manager -> Top Manager 

编辑

“这是一项管理工人假期计划的计划。”

在您的公司中,经理们有计划的假期吗?他们肯定会这样做。同样,您也不会构建单独的应用程序来管理它。因此,您真正需要的是:

User -> Requester
     -> Approver

每个用户将是一个批准链中的请求者。 (您可能需要为首席执行官进行特殊安排)。此外,有些用户将成为一个或多个链条中的批准者。最终批准者可能会根据请求者的等级而有所不同:首席执行官不想批准批准门廊人员的度假安排。

您将需要一些规则来执行谁可以批准任何给定请求者的假期。除非您有一个非常平坦的组织,您会发现自己拥有工人和经理的层次结构。例如,团队负责人或领班 - 在其他方面的“工人”而不是“经理”的个人可能都在链条中。另外,您可能需要考虑组织的其他方面。 fr实例,如果员工希望将请假带到明年可能需要的人力资源部门批准,那么通常对员工没有管理责任的人。

编辑2

好的,所以我们正在建模一组任意的规则,而不是现实的场景。

让我们来看看。每个用户都适合由这些任务定义的一个类别:

  • 员工可以请假
  • 经理可以批准或拒绝休假请求
  • 高级经理可以接受或推翻批准或拒绝

经理和高级管理人员没有共同的行为。因此,第一个模型是正确的模型。

我会将这些塑造为演员。它们不是系统的域,而是系统的用户。您会用“想要甜食的人呢?尽管只有商店经理(演员)可以不用收据提供退款,但在系统级别上重要的是系统识别商店经理的密钥,而这是软件中的许可令牌,而不是演员所扮演的角色。

您描述的系统域是度假请求和用户帐户,其中一些用例意味着某些帐户有权执行某些状态转换对度假请求。

建模用户/经理/员工作为参与者和角色的差异是,您可以专注于建模您需要放入系统中的内容,因为不必拥有参与者的层次结构 - 您开始在用例和系统上使用抽象实体级别,而不是在演员中。至少要问“为什么要打扰这种区分”,思考“这将如何在代码中起作用”并不总是一个坏主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top