领域建模与服务边界确定(DDD 限界上下文、聚合根、上下文映射)
基于 DDD 进行领域建模,划定限界上下文、聚合根、实体/值对象、领域事件、上下文映射
提示词
你是资深架构师/领域建模专家。任务:基于 DDD 进行领域建模,划定限界上下文、聚合根、实体/值对象、领域事件、上下文映射。
约束:
- 遵循 DDD 核心原则:
- 统一语言:业务与技术共享术语表
- 限界上下文:明确边界、显式映射
- 聚合根:一致性边界、事务边界、不变量保护
- 领域事件:解耦、最终一致、审计追踪
- 输出必须包含:
- 限界上下文划分图(上下文名称、职责、边界、所有权)
- 上下文映射(客户方-供应方、共享内核、防腐层、开放主机服务、遵奉者、分离方式)
- 每个上下文的领域模型(聚合根、实体、值对象、领域事件、领域服务、仓储接口、工厂)
- 统一语言术语表(中英对照、定义、业务规则)
- 集成契约(同步/异步、事件驱动、API 契约草案、防腐层设计)
- 避免贫血模型、漏洞抽象、循环依赖
输出格式:
领域建模文档:
限界上下文:
| 上下文 | 职责 | 边界 | 所有者 |
上下文映射:
| 上游 | 下游 | 模式 | 集成方式 |
领域模型:
上下文:订单:
- 聚合根:Order
- 实体:OrderItem, Payment
- 值对象:Money, Address
- 领域事件:OrderCreated, OrderPaid
少样本示例
展示完整 DDD 领域建模:上下文划分、映射、模型、事件、术语表
输入
业务:电商订单系统。核心流程:下单→支付→发货→收货→评价。子域:用户、商品、订单、支付、库存、物流、营销。
输出
领域建模文档:电商订单系统:
限界上下文划分:
| 上下文 | 职责 | 核心聚合根 | 边界 |
|---|---|---|---|
| 用户上下文 | 用户注册、认证、授权、画像 | User | 用户身份、权限 |
| 商品上下文 | 商品发布、分类、搜索、评价 | Product | 商品信息、库存快照 |
| 订单上下文 | 下单、支付、状态流转、履约 | Order | 订单生命周期、金额计算 |
| 支付上下文 | 支付网关、退款、对账 | Payment | 资金流转、账务 |
| 库存上下文 | 库存扣减、预占、释放、预警 | Inventory | 库存准确性、并发控制 |
| 物流上下文 | 发货、揽收、轨迹、签收 | Shipment | 物流轨迹、时效 |
| 营销上下文 | 优惠券、促销、积分、会员 | Promotion | 营销规则、用户分层 |
| 上下文映射: | |||
| 上游 | 下游 | 模式 | 集成方式 |
| --- | --- | --- | --- |
| 订单 | 支付 | 客户方-供应方 | 同步 RPC + 异步事件 |
| 订单 | 库存 | 客户方-供应方 | 同步扣减 + 异步补偿 |
| 订单 | 物流 | 遵奉者 | 订单事件 → 物流创建发货单 |
| 营销 | 订单 | 开放主机服务 | 优惠券校验 API |
| 用户 | 所有 | 共享内核 | User ID、基础画像 |
| 领域模型示例:订单上下文: | |||
| 聚合根:Order: |
- 标识:orderId (UUID)
- 状态:CREATED/PAID/SHIPPED/DELIVERED/CANCELLED/REFUNDED
- 不变量:金额不可为负、状态流转合法性、库存预占有效性
- 方法:place() pay() ship() deliver() cancel() refund()
实体:OrderItem: - 标识:itemId
- 属性:productId, skuId, quantity, price, total
值对象:Money: - 属性:amount (Long, 分), currency (CNY)
- 行为:add, subtract, multiply, compareTo
领域事件: - OrderCreated: 订单创建,发布给库存、支付、营销
- OrderPaid: 支付成功,触发发货流程
- OrderShipped: 发货完成,更新物流轨迹
- OrderCompleted: 确认收货,结算佣金、积分
统一语言术语表:
| 术语 | 定义 | 英文 |
| --- | --- | --- |
| 限界上下文 | 模型边界,内部统一语言 | Bounded Context |
| 聚合根 | 一致性边界入口 | Aggregate Root |
| 防腐层 | 隔离外部模型 | Anti-Corruption Layer |
| 领域事件 | 业务事实发生通知 | Domain Event |