上节课咱们介绍了领域建模的一些概念,也一起完成了有关租户、组织和员工的领域建模。今天这一讲,我们继续对项目管理、人员分配和工时登记部分进行建模。
在完成领域模型的过程中,我们还会对“多对多关联”进行更深入的学习,一起识别“操作”,并且划分模块,最后还会完善业务规则并建立词汇表。掌握了这些技巧,你就可以尝试运用领域建模解决一些实际问题了。
深入理解“多对多”关联
和上节课一样,我们从项目管理部分的领域名词开始建模。同样,你是架构师,我是产品经理。
我们先假定每个名词都是一个实体,然后再把这些实体一个个加到已有的模型图里。初步识别出的实体有下面这些:
处理“客户”
我们首先来处理客户实体。按照需求,每个客户有一个客户经理负责。你和我确认了一下:“客户经理也是员工对吧?”我说:“是的。”于是你把客户添加到了模型里,如下图:
这里你把客户经理当作了一个角色,员工和客户的关联翻译成自然语言就是“一个员工可以充当多个客户的客户经理,而一个客户有且仅有一个员工作为他的客户经理”。
处理“合同”
完成了对客户的建模,我们开始处理合同实体。根据需求,“每个合同都有一个销售人员负责”,于是,你画出了下面的模型图:
你有些疑惑:“客户经理是不是也是销售人员呢?”我说:“是的。”于是你意识到:“销售人员应该也是员工的一种岗位,并且在与客户的关联中,充当了客户经理这个角色。那么,类似地,销售人员又充当合同的什么角色呢?”我说:“就叫合同经理吧。”
于是,你修改了销售人员这个角色的名字,并且在岗位的注释中增加了销售人员。此外,你又增加了“只有销售人员才能作客户经理” 以及“只有销售人员才能作合同经理”这两条业务规则。
现在的模型图如下: