事件处理器中对领域的操作

14-06-26 wilsonp
借用一下一位DDD朋友论坛中的图:


注意图中红色框部分,这里有点疑问,当某个业务跨越多个聚合的情况下,通过领域事件来进行解耦的方式进行处理的情况下,如果"聚合A"发出一个事件"EA"到事件总线,(由于"EAEventHandler"事先已经在事件总线上注册了关注聚合A发出的某个事件),然后EAEventHandler中的handle方法被调用并处理业务逻辑,但有一个问题,EAEventHandler此时只有聚合根B的ID:aggegateBId,那在这里可以通过仓储来加载聚合B吗?因为有一部分业务逻辑位于聚合B中???如果不能加载,那这里应该如何处理呢?

EAHandler的伪代码如下:

public class EAHandler extend DomainEventHandler{

public void handle(EA event){

//bs...

}

}

EA的伪代码如下:

public class EA extends DomainEvent{

//private EventSource source;//这个是定义在DomainEvent抽象类中的,这里只是进行说明

private String aggegateBId;//聚合根B的id

//其他属性省略

}

              

tangxuehua
2014-06-27 21:30
发送command即可,command是用来修改聚合根B

猜你喜欢