是否可以在不属于聚合状态更改 (DDD) 的情况下发出域事件

问题描述 投票:0回答:2

我想知道如果领域事件不是聚合状态变化的自然结果,如何实现(在 DDD 中)。

我会借用这个帖子的例子。

所以假设我们需要这样的事件:temperatureWasMeasured这可能是我们已经完成的某些建模的产物(例如在事件风暴会议中)。

此事件感觉像是某些读取操作的产物,而不是某些聚合的实际状态更改。

所以问题是: 在哪里以及如何发出这个事件才有意义?.

我们可以创建一个实体或一个聚合,它可以有一个状态来计算读取的次数,以便作为状态更改发出。但这真的有必要吗?

在那里的资源中,“域事件”的定义似乎没有提到状态变化,而是作为域中发生的事情。

所以一个测量动作(在非量子力学环境中😝),被认为是一个域事件,比如 temperatureWasMeasured 事件?

如果有人能澄清这些问题就太好了,因为似乎没有明确的答案。

events aggregate domain-driven-design event-driven domain-events
2个回答
1
投票

有趣的问题...我也在努力掌握 DDD。

在这种情况下,您不会在聚合中使用布尔值对象来定义它是真还是假吗?有没有量体温?

我一直认为你需要将任何事件关联到一个聚合....


1
投票

好问题,我的理解是域事件应该在域状态更改时发生,而不是在简单查询中发生。

在上面的例子中,如果我们想测量温度,我们只是直接从与域无关的应用层使用存储库查询,因此不应发生域事件。

如果其他人对示例中的温度变化感兴趣,他们可能应该收听温度变化域事件并从查询中获取其初始状态。

如果需要知道该域的测量值,则设计中可能会缺少 TemperatureMeasure 聚合,它将保留所有测量值并发出域事件。

© www.soinside.com 2019 - 2024. All rights reserved.