将相同的操作应用于多个聚合

时间:2019-08-19 19:44:17

标签: domain-driven-design

我有一个StockLine汇总。它显示了什么产品驻留在仓库中的哪个位置以及数量。现在,在UI上,我可以选择一个库存行并保留一些数量。稍后,我们需要对储备库进行多选并保留它们。可以说我选择了2个聚合,而我想保留两个聚合。考虑到我已经实现了一个用例来保留1个聚合,这样做的最佳方法是什么? 1)foreach选定的一组总调用BackEnd的ReserveStockLine一对一... 2)仅发送一个带有所选集合ID的命令,并将其视为完全独立的用例。如果它是一个单独的用例,我应该返回一些ReservationResult并带有foreach聚合的预留结果?原因可能是笨拙,否则正在保留相同的聚合并且其数量已经不够(因为用户在UI上看到的数量不是真实数量)。我的要求是尽可能多地保留。如果一个失败了,我就不必回退其他...考虑如何在UI上交互显示此过程。也许有些复选框显示了库存线是如何被一一保留的。

1 个答案:

答案 0 :(得分:0)

  

仅发送一个带有所选集合ID的命令,并将其视为完全独立的用例。

这是一种常见的方法。您“只是”遍历id,然后一次更新每个聚合。

在幸福的道路上,这相对简单。

为避免争用,您可能最终需要在其自身的事务中更新每个聚合。

在幸福的道路上,事情相对简单。但是,当您开始考虑失败(如果应用程序在中间崩溃时会发生什么),那么事情就会变得更具挑战性。您可能需要确保对聚合的更新是幂等的,以便可以安全地重复丢失的命令。