Domain driven design 订单及;库存DDD-应在何处处理分配/预订?
我正在尝试将一个遗留的订单处理和库存系统重构为一个更干净的面向服务的事件驱动体系结构。但是,我很难决定哪些服务应该负责库存的预订/分配 当前系统的简要概述Domain driven design 订单及;库存DDD-应在何处处理分配/预订?,domain-driven-design,microservices,nservicebus,soa,Domain Driven Design,Microservices,Nservicebus,Soa,我正在尝试将一个遗留的订单处理和库存系统重构为一个更干净的面向服务的事件驱动体系结构。但是,我很难决定哪些服务应该负责库存的预订/分配 当前系统的简要概述 销售订单是通过第三方系统向我们下的,但我们不一定有所有的订单行库存 如果订单项目有库存,我们会立即为该订单分配/保留库存 但是,如果我们没有足够的库存,那么我们通过采购系统从供应商处采购库存 当商品从供应商处到达时,系统将搜索该商品的所有未结销售订单,并根据销售订单日期为其保留/分配可用库存*** 我已经确定了两项我认为需要开发的服务
- 如果订单项目有库存,我们会立即为该订单分配/保留库存
- 但是,如果我们没有足够的库存,那么我们通过采购系统从供应商处采购库存
- 销售-负责接收销售订单并插入数据库。具有域实体,如订单、订单行等
- 库存-负责跟踪仓库中有多少库存可用。具有域实体,如StockItem
- 销售业务连续性搜索等待该商品的已打开订单。然后它要求Inventory BC获取它需要的项目数量(此请求是同步的),并关闭订单
- 库存BC收到请求并减少该项目的库存
- ProductId,每个可用产品一个
- InventoryTotal,附加到ProductId。这个数字上下浮动
- OrderId,以创建订单
- OrderDate,以确保我们可以找到应首先接收进货的订单
如果您想讨论此问题,请联系我们support@particular.net,提到我的名字,我们可以继续对话。您所说的是松散耦合的域应用程序,管理您的销售订单、管理您的库存和管理您的采购订单。
库存必须始终是最新的,以便不出售你不能交付的东西。因此,PO en-So应用程序应通过同步(库存)服务与库存进行对话。为了保持所有内容的一致性,采购方的事件(如收到的采购订单少于您预期的数量)将对库存中已分配的采购订单数量产生影响。因此,同一个PO PC(例如,在该PC中,收到的数量低于预期)应同步更新库存,以更新SOs可分配的数量,并在So应用程序中异步发布事件,以便通知用户并讨论相关行动。等等。
但是,由于库存分配/预订涉及库存和销售
-它与销售有何关系?执行分配/预订的人员需要知道哪些销售订单在等待库存,以便能够以正确的顺序分配,即先分配最旧的订单。我们还需要针对销售订单行更新“AllocatedQty”字段。我仍然看不到库存与销售的关系。这是什么AllocatedQty
?我想我在我原来的帖子中遗漏了一个要点。我们的销售订单存储在一个单独的数据库中,与我们的产品和库存信息相关联,我们正在进行的这个项目不太可能更改。