域驱动设计 – 在ES CQRS DDD中,事件是否可以根本不更新任何真实域状态?

是否可以在事件流中包含不影响域状态中任何聚合的事件?

举个例如AllCompletedTodosPurged之类的事件,除了通过删除所有已完成的待办事项来更改具有活动待办事项的读取模型.

解决方法

不,这不行.聚合状态更改时会生成域事件.如果没有任何改变,则没有域事件.

您也可以使用域外的事件,但它们不会成为域的一部分,显然不是事件流的一部分.

在您的方案中,如果事件不是由聚合更改生成的,那么为什么它应该被任何聚合包含?从技术上讲,如果事件不属于任何事件,您将在哪个事件流中添加该事件?你会为所有涉及的Todos添加该事件吗?这没有道理.

我不确定清除是否属于您的域名,但如果是,则意味着所有已完成的待办事项都被“删除”,即每个涉及的聚合已经在其集合中具有TodoDeleted事件. AllCompletedTodosPurged只是一个对更新读取模型有用的事件,但就是这样.它不应该影响域模型.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...