我試圖用dddd實現事件源系統。目前我正在掙扎着我的事件如何以及在哪裏跨越有界的環境邊界。EventSourcing內部和外部有界的上下文
想有兩個限定語境:
- 產品管理
- 物流系統
產品管理擁有所有有關產品的知識。爲了簡化,它只是「名稱」。物流系統也有產品,但不瞭解他們的元數據。對他們來說,它大多隻是一個帶有Id的物理盒子。但是當有人掃描這個產品時,他們也想顯示這個名字。因此,產品管理委員會應通知物流BC,產品已註冊且名稱已更改。因此,我將結束在產品經理的事件,從ProductAggregate裏面提出:
ProductManagement.Events.ProductRegistered
ProductManagement.Events.ProductNameChanged
當我得到了它正確這些是我將保存到事件存儲的事件。這些也是將要發佈到消息總線上的事件。所以在後勤方面我會訂閱這些活動。到現在爲止還挺好。
現在的問題是: 我將如何在物流方面處理此事件? Vaughn Vernon在一次演講中表示,最好有一個事件處理程序,它位於應用程序層中,因此它基本上是一個應用程序服務。他還表示,最好將其轉換爲一個或多個命令。我是否將所有收到的事件再次保存在物流方面?我是否也保存這些命令?如果出現問題,我該如何重現當前狀態?或者我怎麼知道,它不是接收有界上下文中的處理過程的錯誤,而是錯誤的事件。如果我的轉換命令被拒絕,我該怎麼辦?
我知道在物流方面沒有計算或總量變化。但我認爲這對我的問題無關緊要。