DDD(2)-基于DDD的微服务设计

目录

1、案例业务功能

2、战略设计

2.1、场景分析

2.2、领域建模

3、战术设计

3.1、服务的识别和设计

3.2、聚合内的对象

3.3、形成编码清单


1、案例业务功能

1、【请假】请假人填写请假单提交审核,逐级提交审批,不通过则退回至申请人

2、【考勤】核销请假数据后,对考勤数据进行统计

2、战略设计

分析场景(事件风暴)->提取领域模型和聚合根->把实体和值对象聚合成聚合->划分限界上下文

事件风暴方法:参与者把各自意见写在贴纸上,然后大家对意见展开讨论,最后收敛和统一,形成产品愿景图。

2.1、场景分析

以请假为例分析

场景1:请假

用户:请假人

1)请假人登录系统,输入信息完成认证

2)请假人打开请假页面,填写请假单保存,提交审批

3)请假人修改请假单,打开页面,修改,保存提交

场景2:审核

用户:审核人

1)审核人登录系统,输入信息完成认证

2)获取请假单,查看待办

3)填写审批意见

4)完成审批

2.2、领域建模

领域建模是一个收敛过程,分三步:

1)提取领域对象

通过分析出领域对象:请假单、审批意见、人员、组织关系等

2)构建对象

先找聚合根:请假单、人员具有聚合根的特性(独立的生命周期、全局唯一的ID、可以创建修改其他对象)

然后找聚合根关联的实体和值对象:审批意见和请假单这个聚合根紧密关联;组织关系和人员这个聚合根紧密关联

最后刷卡明细、考勤明细、这几个实体没有聚合根,我们就把这几个聚合紧密的实体放在一个考勤聚合里面

图如下:

3)划分限界上线文

 我们发现人员聚合和请假聚合共同完成请假的业务,所以这两个就形成了请假限界上下文,而考勤聚合单独的形成考勤限界上下文,见上图

到目前位置我们就建立了考勤和请假两个领域模型

理论上讲一个限界上线文就可以设计成一个微服务

3、战术设计

战术设计就是根据领域模型完成微服务设计的过程。分两个阶段:分析微服务领域对象和设计微服务代码

3.1、服务的识别和设计

分析【提交审核】的流程:

1)根据人员类型、审核规则等,获取下一个审核人的角色

2)根据审批人的角色获取1)中下一审批人

3)为1)中的审批人分配审核人

通过分析我们可以在应用层领域层设计以下服务和方法:

应用层:提交审核应用服务

领域层:查询审批规则、根据规则查询审批人、修改请假流程信息。涉及到请假人员两个聚合

3.2、聚合内的对象

实体:

请假单是聚合根,会有多条审批意见,审批意见就可以设计为实体。另外,审批通过后会产生【请假单已通过】的领域事件,即请假单通过实体。

值对象:

审批数据来源于人员聚合中的人员实体,这个实体可设计为值对象。人员类型、请假类型等枚举也可以设计为值对象。

所以,请假和人员的领域对象依赖图如下:

 

 3.3、形成编码清单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值