我想知道如果领域事件不是聚合状态变化的自然结果,如何实现(在 DDD 中)。
我会借用这个帖子的例子。
所以假设我们需要这样的事件:temperatureWasMeasured这可能是我们已经完成的某些建模的产物(例如在事件风暴会议中)。
此事件感觉像是某些读取操作的产物,而不是某些聚合的实际状态更改。
所以问题是: 在哪里以及如何发出这个事件才有意义?.
我们可以创建一个实体或一个聚合,它可以有一个状态来计算读取的次数,以便作为状态更改发出。但这真的有必要吗?
在那里的资源中,“域事件”的定义似乎没有提到状态变化,而是作为域中发生的事情。
所以一个测量动作(在非量子力学环境中😝),被认为是一个域事件,比如 temperatureWasMeasured 事件?
如果有人能澄清这些问题就太好了,因为似乎没有明确的答案。
有趣的问题...我也在努力掌握 DDD。
在这种情况下,您不会在聚合中使用布尔值对象来定义它是真还是假吗?有没有量体温?
我一直认为你需要将任何事件关联到一个聚合....
好问题,我的理解是域事件应该在域状态更改时发生,而不是在简单查询中发生。
在上面的例子中,如果我们想测量温度,我们只是直接从与域无关的应用层使用存储库查询,因此不应发生域事件。
如果其他人对示例中的温度变化感兴趣,他们可能应该收听温度变化域事件并从查询中获取其初始状态。
如果需要知道该域的测量值,则设计中可能会缺少 TemperatureMeasure 聚合,它将保留所有测量值并发出域事件。