首页 > 解决方案 > 事件溯源的副作用

问题描述

假设我有以下关系):

Aggregate A (contains E1, E2, E4)
 - Entity of type E1
 - Entity of type E2 (contains E3)
   - Sub-entity of type E3
 - Entity of type E4

所有实体都实现以下签​​名:

fun handleCommand(command: Command): List<Event> // returns a list of events that can be applied on itself
fun handleEvent(event: Event): Entity // returns itself with the new event applied

在处理 say 上的命令时E4,这在逻辑上应该会在 E2 上引起一些副作用(事件),最佳实践是什么?请注意,这不应与 sagas 混淆,但这是一个关于在处理子实体上的命令时应如何生成对父实体的副作用的一般性问题。

标签: domain-driven-designcqrsevent-sourcing

解决方案


这是聚合的重点。它将协调这个过程。外部代码将无法直接在 E4 上发出命令,因为它将被封装在聚合中。相反,命令将被路由到聚合,聚合将在内部发布和协调流程。

希望有帮助


推荐阅读