领域驱动设计 - 何时将一个有界上下文分成两个

时间:2015-03-08 03:09:04

标签: domain-driven-design

在学习域驱动设计时,我了解到我们应该保持两个有限的上下文彼此独立。但是,我很难解耦两个真正依赖于彼此的有界上下文。

更具体地说,我正在设计一个销售点系统。它有一个库存管理子系统,用于管理库存中的产品。它还有一个销售子系统,负责管理客户订单和交易。它们似乎是分开的有界语境,但我不能将它们分开:

  1. [销售上下文]中的订单引用了[在库存上下文中]的产品。
  2. 当用户支付订单[在销售上下文中完成]时,应减少产品数量[在库存上下文中完成]。
  3. 我知道我可以使用域事件和Saga来替换跨境服务调用,但是我只想知道我的设计是否正确?销售和库存是否真的属于两个分离的有界上下文?

1 个答案:

答案 0 :(得分:0)

如果您在三个有界上下文中将它们分开,则可以使这些依赖项无周期:

  • 产品BC,您的产品管理(包括价格,重量,......);没有依赖
  • 销售BC,处理销售;依赖于产品BC
  • 库存BC,对产品和销售BC的依赖。

通常销售与库存完全分开(即,您可以在没有产品可用的情况下进行销售)。如果您要求只能销售库存产品,请让您的用户界面负责仅提供库存中有库存的待售产品。