处理从其他聚合发布的聚合中的事件是否正确?或者域应该只处理命令?
就我而言,我有一个管理设置的应用程序。我有一个应用程序的聚合和applicationGroup的聚合。当我想为特定的一组应用程序创建设置时,该命令由我的applicationGroup处理,然后applicationGroup发布一个事件GroupSettingsCreated,但DDD是否说我们可以直接在我的ApplicationAggregate中处理这个事件?或者我应该在事件处理程序中处理此事件,将其映射到命令然后将其发送到我的ApplicationAggregate?
由于
约翰
答案 0 :(得分:1)
如果你想在另一个聚合中处理一个聚合事件,那么处理程序应该是生成事件的聚合的子代。
换句话说,在此bounded context中,Application
应该是ApplicationGroup
的孩子,而ApplicationGroup.CreateSettings()
应该将设置传播到其子应用程序。
另一种思考方式:“应用程序组”可能不是真正的聚合 - 而是用户界面提供的便利。
答案 1 :(得分:0)
John,我不知道DDD中有什么可以解释你的问题。这实际上是Event Driven Architecture(EDA)和Command Query Responsibility Segregation(CQRS)的问题。
为了提供更具体的建议,我想知道应用程序和applicationGroup实体扮演什么角色。顺便说一句,它们听起来更像是应用程序/基础架构概念,而不是域概念。
一般情况下,我使用命令从逻辑上从源中推送下一个操作(下一步操作是必要的下一步)。当有问题的行为在逻辑上是对上游行为的反应时(上游代码不知道对刚刚发生的事情的反应),我使用事件。
答案 2 :(得分:0)