张逸-聚合工作坊
如果无法正常显示,请先停止浏览器的去广告插件。
1. 张逸
2. 关于我
架构编码实践者
领域驱动设计布道师
大数据平台架构师
敏捷转型咨询师
@逸言
3. 聚合基础知识
4. 领域设计要素
5. 角色构造型
6. 领域服务
7. 聚合的生命周期
8. 什么是聚合
9. 区分OO聚合与DDD聚合
10. 聚合的关系
11. 识别聚合的过程
理顺对象图
第一步
分解关系薄弱处
第二步
调整聚合边界
第三步
12. 识别聚合的过程
p 针对领域分析模型,梳理模型对象之间的关系,
按依赖强弱分别为:
• 继承
• 合成
• 聚合
• 依赖
• 无关系
p 确定领域模型对象是实体还是值对象
p 将具有继承或合成关系的领域模型对象放在一
个聚合边界内
p 根据聚合的本质梳理聚合
• 概念完整性
• 概念独立性
• 不变量Invariant
• 事务一致性
13. 案例:项目管理上下文
14. 领域分析模型
15. 理顺对象图
16. 分解关系薄弱处
17. 调整聚合边界
18. 工作坊演练
19. 供应链:iChains
iChains提供供应链的完整功能,能够智能地针对运输物料进行运费估算、包裹拆分与路径规划,以期通
过最小的成本提供高品质的供应链服务。
20. 供应链整体业务流程
拣货
Picklist
打包
Packing 运输
Shipping
打包
Packing 运输
Shipping
仓库A
订单
拣货
Picklist
仓库B
21. Shippment模型全景
Shipment
Type
PicklistSatus
History
PicklistItem
1
1
1
Shipment
1
PicklistBin
Shipment
Attribute
Shipment
ContactMech
1
1
Picklist
1
*
Shipment
1
ContactMechType
*
Shipment
RouteSegment
ShipmentStatus
*
ShipmentItem
Delivery
Shipment
Document
1
Shipment
MethodType
Carrier
ShipmentMethod
Shipment
CostEstimate
1
ShipmentItem
Feature
ShipmentItem
Billing
*
ItemIssuance
1
Shipment
PackageContent
*
Shipment
Package Shipment
BoxType
Shipment
Receipt RejectReason
ShipmentPackage
RouteSegment
22. 业务规则
p 一个拣货列表Picklist用于挑选仓库中的货物,以便于打包运输。一个Picklist可以分配给
多个Bin(拣货容器)。确定好的Bin也可能需要合并(merge)或者调整(transfer)。每个
Bin的产品会分成多个不同的运输(Shipment)。一个PicklistBin包含多个PicklistItem。每
次拣货的状态变更都需要记录在PicklistStatusHistory。
p 一个运输(Shipment)会有多个运输项(ShipmentItem),每个ShipmentItem对应运输的物
料(Product),包括Product的数量。每次运输需要联系人信息(ContactMesh)。
p 每个运输项(ShipmentItem)有自己的多个账目信息(ShipmentItemBilling)和多个发行信息
(ItemIssuance)。运输项有自己的特性(ShipmentItemFeature),并会生成运输项的文档
(ShipmentDocument)。
23. 业务规则
p 一个Shipment包含多个包裹ShipmentPackage,每个包裹的内容
ShipmentPackageContent对应于运输项ShipmentItem。如果一个ShipmentPackage定义
了Receipt,说明该包裹已运输,状态从PURCH_SHIP_CREATED更新为
PURCH_SHIP_SHIPPED。
p 一个ShipmentItem有多个Issuance,而每个ItemIssuance与OrderItem存在一对一关联。
每个运输项(ShipmentItem)对应一个ShipmentPackageContent。因此在获得
ShipmentPackageContent时,需要合计Issuance的值。
p 运输需要成本估算ShippingCostEstimate。估算的费用取决于运输的方式、承运商、运
输的Quantity Break,包括重量、数量、价格等。
p 一次运输需要规划路线(Route),每一个路线规划都有一个运输方式。
24. Shippment
ShipmentStatus
Shipment
Attribute Product
Shipment ShipmentItem
Shipment
ContactMech ShipmentItem
Billing
Shipment
ContactMechType ItemIssurance
ShipmentItem
Feature
25. Shippment Package
Shipment
BoxType
OrderItem
1
1
ItemIssurance
*
1
Shipment
1
*
Shipment
Package
1
*
Shipment
PackageContent
1
*
RejectReason
Shipment
Receipt
Product
1
1
ShipmentItem
26. Shippment Route Segment
Shipment
MethodType
Delivery
1
*
Shipment
1
*
Shipment
RouteSegment
ShipmentPackage
RouteSegment
CarrierParty
27. Shippment Cost Estimate
Carrier
ShipmentMethod
QuantityBreak
Shipment
CostEstimate
from
to
Geo
CarrierParty
ProductStore
28. Packlist
PicklistSatus
History
PicklistItem
Shipment
* *
1 1
PicklistBin
*
1
Picklist
29. 通过以下方式与我交流
「逸言」
公众号
「TOP DDD」
知识星球