2

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

employee
manager
top mananger

我决定定义一个, Userfrom whereEmployee和will special from。现在,我不知道我应该选择什么样的专业等级。我无法在以下方式之间做出决定:ManagerTop Manager

替代文字

或者

替代文字

哪个可能更可取,为什么?

作为一名长期的编码员,每次我尝试做一个领域模型时,我都必须反对尝试思考我将如何编码的想法。据我了解,我不应该在域模型中考虑这些问题,而应该只在对象关系中考虑。我不必在这里考虑代码重复或任何此类细节,因此我无法真正选择任何选项。

谢谢

编辑:

我会更明确一点:这是一个管理工人假期计划的程序。使用此程序,员工可以选择一年中的休假天数。然后经理可能会批准或不批准每个员工的这些日子,并且在一天结束时,最高经理应该批准或不批准经理的决定。这是我的程序的所有用户都应该能够做到的。没有其他任务。

4

3 回答 3

2

这主要归结为您如何定义术语的问题。基本问题是经理是否可以在任何可能的情况下替代员工——在不了解所建模工作场所的精确规则的情况下,不可能以一种或另一种方式说出来。

一个普遍的概念是,是的,至少在一定程度上,在紧要关头,经理应该能够完成他任何下属的工作(至少低于一个级别,很可能是两到三个)。

另一方面,在一些有很多工会驱动规则的地方,情况可能根本不是这样。即使一个人完全有能力胜任一项工作,规则也可能完全阻止他替代该职位。在某些情况下,这源于认证要求等(例如,经理可能有资格从事这项工作,但所需的认证已失效)或工会规则之类的事情(例如,我的一位朋友曾因他从公司商店把一个手电筒和电池带回了他的实验室,而不是让工会材料处理人员为他做这件事)。

于 2010-05-31T04:03:47.670 回答
2

在现实生活中,经理也是员工。所以这肯定只是一个日益专业化的链条:

User -> Employee -> Manager -> Top Manager 

编辑

“这是一个管理工人假期计划的程序。”

贵公司的经理是否计划休假?他们肯定会的。同样可以肯定的是,您不会构建一个单独的应用程序来管理它。所以你真正需要的是:

User -> Requester
     -> Approver

每个用户都将成为一个审批链中的请求者。(您可能需要 CEO 的特殊安排)。此外,一些用户将成为一个或多个链中的批准者。最终批准者可能会根据请求者的等级而有所不同:CEO 不想为批准清洁人员的假期安排而烦恼。

您将需要一些规则来强制执行谁可以成为任何给定请求者假期的批准者。除非你有一个非常扁平的组织,否则你会发现你有一个工人和经理的等级制度。例如,团队领导或工头——在其他方面是“工人”而不是“经理”的个人——可能在链条中。此外,您可能需要考虑组织的其他方面。例如,如果员工希望将假期延续到下一年,这可能需要人力资源部门的批准,通常对员工没有任何管理责任的人。

编辑 2

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

让我们来看看。每个用户都属于一个类别,由以下任务定义:

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

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

于 2010-05-31T03:45:51.410 回答
1

我会把这些塑造成演员。他们不是系统的域,而是系统的用户。你会用“想要糖果的小学生”、“想要烟草的小学生的父母”、“店员”等来模拟商店的库存系统吗?虽然只有商店经理(演员)可以在没有收据的情况下退款,但在系统级别重要的是系统识别商店经理的密钥,并且是软件中的权限令牌而不是演员所扮演的角色。

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

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

于 2010-05-31T08:18:41.900 回答