这是我要解决的问题。我有客户。该客户端需要软件来管理突发事件。
客户具有多个设施。每个 FACILITY 都包含多个 LOCATIONS 。
当他们记录 INCIDENT 时,他们需要记录的最少信息是发生位置的 LOCATION ,的 FACILITY 位置发生的地方和发生的事情。
所以我有问题要对这个问题进行建模。这就是我所拥有的。
这是我的问题: 我这个设计很好。使用 FACILITY 根是合理的,因为 LOCATION 不能单独存在。但是,突发事件现在对 FACILITY 和 LOCATION 都具有软引用。
我考虑将 LOCATION 设为值对象,而不是实体。在这种情况下, INCIDENT 将拥有其自己的 LOCATION 副本。但是,如果 LOCATION 发生突变,这将成为一个问题。
有什么想法吗?提前致谢。也许我缺少了一些东西。仅作记录-突发事件因为它们包含工作流程等,因此变得非常复杂,并且是核心领域。也许只有 INCIDENT 应该用DDD解决?
答案 0 :(得分:2)
那么,如果您确定位置发生了变化,您是否还希望这些变化也传播到事件的位置?我想改变它的唯一原因是修正错别字,但这是您需要提出的问题。
在任何情况下,您都可以引用复合ID,我最将其表示为IncidentLocation
值对象。该规则仅规定您不能对子实体进行对象引用,并且只能保证子实体的根在其根中唯一,因此您不能仅引用该子实体的ID。
请注意,在这里至少有两个上下文可能是一个好主意。在基于CRUD的上下文中管理设施和此类详细信息,在事件日志记录上下文中管理事件的生命周期。在这种情况下,Location
在第一个上下文中可以是一个实体,在第二个上下文中可以是一个不可变的值对象Location {facilityId, locationId}
。