情况:我有以下单位:
- 车
- 引擎
- 轮子
- 身体
- 汽车的型号
- 发动机型号
- 车轮模型
- 身体模型
每个单元都有自己的 ID。车内是发动机、车轮和车身的标识符。每个设备单元都包含相应型号的标识符。
有一条规则:在汽车上安装发动机、车轮和车身时,它们的型号必须与汽车的型号兼容。即子设备模型的某些参数必须与机器模型的相应参数相匹配。
假设发动机已经安装在汽车上。我决定更换发动机型号。引擎单元已更改并已保存到数据库中。但发动机型号必须与汽车型号兼容。事实证明,机器和引擎单元之间应该存在最终一致性(最终一致性)。
问题:如何正确解决新发动机型号与已安装发动机的车型之间的冲突?
PS最简单的方法是在更改单元模型之前在应用服务中提前进行此类检查。但是,应用程序服务不应具有域模型逻辑。
在已知主题环境的条件下,我会走最简单的方法。引擎知道它可以在汽车中使用,并在自己的保存尝试中重新保存(重新验证)汽车。
理论上,您需要创建某种所有相关方都订阅的事件服务,但您自己看看,实现不会很简单而且相当不明显,尤其是在循环事件开始相互生成的情况下。