18 | 知识点串讲:基于DDD的微服务设计实例
2019-11-25 欧创新
DDD实战课
进入课程
讲述:欧创新
时长 21:29 大小 14.76M
你好,我是欧创新。
为了更好地理解 DDD 的设计流程,今天我会用一个项目来带你了解 DDD 的战略设计和战
术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键
点。
项目基本信息
项目的目标是实现在线请假和考勤管理。功能描述如下:
下载APP
战略设计
战略设计是根据用户旅程分析,找出领域对象和聚合根,对实体和值对象进行聚类组成聚
合,划分限界上下文,建立领域模型的过程。
战略设计采用的方法是事件风暴,包括:产品愿景、场景分析、领域建模和微服务拆分等几
个主要过程。
战略设计阶段建议参与人员:领域专家、业务需求方、产品经理、架构师、项目经理、开发
经理和测试经理。
1. 产品愿景
产品愿景是对产品顶层价值设计,对产品目标用户、核心价值、差异化竞争点等信息达成一
致,避免产品偏离方向。
事件风暴时,所有参与者针对每一个要点,在贴纸上写出自己的意见,贴到白板上。事件风
暴主持者会对每个贴纸,讨论并对发散的意见进行收敛和统一,形成下面的产品愿景图。
请假人填写请假单提交审批,根据请假人身份、请假类型和请假天数进行校验,根据审
批规则逐级递交上级审批,逐级核批通过则完成审批,否则审批不通过退回申请人。
1.
根据考勤规则,核销请假数据后,对考勤数据进行校验,输出考勤统计。2.
我们把这个产品愿景图整理成一段文字就是:为了满足内外部人员,他们的在线请假、自动
考勤统计和外部人员管理的需求,我们建设这个在线请假考勤系统,它是一个在线请假平
台,可以自动考勤统计。它可以同时支持内外网请假,同时管理内外部人员请假和定期考勤
分析,而不像 HR 系统,只管理内部人员,且只能内网使用。我们的产品内外网皆可使
用,可实现内外部人员无差异管理。
通过产品愿景分析,项目团队统一了系统名称——在线请假考勤系统,明确了项目目标和
关键功能,与竞品(HR)的关键差异以及自己的优势和核心竞争力等。
产品愿景分析对于初创系统明确系统建设重点,统一团队建设目标和建立通用语言是很有价
值的。但如果你的系统目标和需求非常清晰,这一步可以忽略。
2. 场景分析
场景分析是从用户视角出发,探索业务领域中的典型场景,产出领域中需要支撑的场景分
类、用例操作以及不同子域之间的依赖关系,用以支撑领域建模。
项目团队成员一起用事件风暴分析请假和考勤的用户旅程。根据不同角色的旅程和场景分
析,尽可能全面地梳理从前端操作到后端业务逻辑发生的所有操作、命令、领域事件以及外
部依赖关系等信息。
下面我就以请假和人员两个场景作为示例。
第一个场景:请假
用户:请假人
第二个场景:审批
用户:审批人
完成审批后,产生请假审批已通过领域事件。后续有两个进一步的业务操作:发送请假审批
已通过的通知,通知邮件系统告知请假人;将请假数据发送到考勤以便核销。
请假人登录系统:从权限微服务获取请假人信息和权限数据,完成登录认证。
创建请假单:打开请假页面,选择请假类型和起始时间,录入请假信息。保存并创建请
假单,提交请假审批。
修改请假单:查询请假单,打开请假页面,修改请假单,提交请假审批。
提交审批:获取审批规则,根据审批规则,从人员组织关系中获取审批人,给请假单分
配审批人。
审批人登录系统:从权限微服务获取审批人信息和权限数据,完成登录认证。
获取请假单:获取审批人名下请假单,选择请假单。
审批:填写审批意见。
逐级审批:如果还需要上级审批,根据审批规则,从人员组织关系中获取审批人,给请
假单分配审批人。重复以上 4 步。
最后审批人完成审批。
下面这个图是人员组织关系场景分析结果图,详细的分析过程以及考勤的场景分析就不描述
了。