2016-08-02 46 views
2

我們當前的系統是不使用domain events的傳統系統。我們將開始發佈domain events。 其他有界的上下文將聽取這些domain events,但只有從我們開始發佈時,失去了所有的過去的信息。DDD:在傳統系統中應用事件存儲

那麼,如何處理這個沒有記錄這些事件的遺留系統,但不知何故,我們希望在實現這個事件存儲系統之前有一個過去的歷史?

根據我們在數據庫中的數據,試圖找出發生的事情並嘗試創建域事件(逆向工程)是一種好方法嗎?

回答

6

我不會爲傳統系統嘗試反向工程事件,,除非有商業上的理由這樣做 - 您的使用案例只是爲了適應您的新方式會用事件來模擬事物嗎?如果沒有商業案例,這聽起來像是浪費精力。

一下怎麼樣,表示你的每一個「東西」的當前狀態(即骨料,如果你正在使用DDD概念),因爲他們在遺留系統現在存在一個開始的事件?然後在其上添加新事件。

I.e.

LegacySystemStateCaptured

NewDomainEvent

AnotherNewDomainEvent

...然後當你重建你的狀態,應用LegacySystemStateCaptured事件以及其他人。

+0

不錯的答案。我還會補充一點,根據'Snapshot'實現,甚至可以將''LegacySystemStateCaptured'事件中的數據記錄爲快照事件,因爲它可能包含所有典型數據。這樣可以節省一次性事件,但這絕對取決於實施。 –

+0

完全是。請隨意編輯我的回答與這個建議:) – tomliversidge