domain-driven-design - 订单和库存 DDD - 应该在哪里处理分配/保留?

标签 domain-driven-design microservices nservicebus soa

我正在尝试将传统的订单处理和库存系统重构为更清晰的面向服务的事件驱动架构。但是,我在决定应该由哪些服务负责库存的预订/分配时遇到了一些困难。

当前系统的简要概述

  • 销售订单是通过第三方系统向我们下达的,但我们不一定有库存的所有订单行。
  • 如果订单商品有库存,我们会立即为该订单分配/保留库存。
  • 但是,如果我们没有足够的库存,那么我们会通过采购系统从供应商处采购库存。
  • 当供应商的 Material 到达时,系统将搜索该 Material 的所有未结销售订单,并为他们预留/分配可用库存,按销售订单日期进行优先排序。 ***

  • 我已经确定了两个我认为需要开发的服务
  • 销售——负责接收销售订单并插入到数据库中。具有域实体,如 Order、OrderLine 等。
  • 库存 - 负责跟踪我们仓库中有多少库存。具有领域实体,例如 StockItem。

  • 但是,由于库存的分配/保留涉及库存和销售,我不确定上面第 2 点中的行为应该放在哪里。

    我欢迎对此提供任何帮助或想法。

    最佳答案

    However, as the allocation/reservation of stock concerns both inventory and sales I am not sure where the behaviour in point 2 above should be put.



    我一直在思考这个问题(纯学术),我目前的结论是预订管理属于库存系统。这将库存来源(从供应商处采购的元素的装载)和库存汇(订单的履行)保持在一起。

    因此,库存系统会缓存自己的填写订单所需的数据副本(允许其自主工作)。一旦得知供应商提供了新库存,即使销售系统碰巧停机维护,它也应该能够取得进展。

    关于domain-driven-design - 订单和库存 DDD - 应该在哪里处理分配/保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53108190/

    相关文章:

    c# - 有没有办法将子容器传递到 NserviceBus 管道中?

    domain-driven-design - DTO贫血模型/贫血值对象吗?

    azure - 当队列长度增加时如何扩展微服务(服务结构)实例

    javascript - Nodejs : get the name and value of Object passing from frontend

    django - 单体或微服务概念

    .net - 关于设计和构建分布式应用程序以跟踪车辆的建议

    architecture - 我如何使用域驱动设计来表示这种情况

    oop - 在实体被认为臃肿之前,我们可以合理地将多少方法放入实体中?

    domain-driven-design - "Save"方法是否属于业务域实体?

    ssis - SQL Server 2012(或 SSIS)如何在任务完成后通知 NServiceBus?