事件處理器中對領域的操作

wilsonp發表於2014-06-26
借用一下一位DDD朋友論壇中的圖:

[img index=1]
注意圖中紅色框部分,這裡有點疑問,當某個業務跨越多個聚合的情況下,透過領域事件來進行解耦的方式進行處理的情況下,如果"聚合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
//其他屬性省略
}

相關文章