2016-08-02 61 views
2

我们当前的系统是不使用domain events的传统系统。我们将开始发布domain events。 其他有界的上下文将听取这些domain events,但只有从我们开始发布时,失去了所有的过去的信息。DDD:在传统系统中应用事件存储

那么,如何处理这个没有记录这些事件的遗留系统,但不知何故,我们希望在实现这个事件存储系统之前有一个过去的历史?

根据我们在数据库中的数据,试图找出发生的事情并尝试创建域事件(逆向工程)是一种好方法吗?

回答

6

我不会为传统系统尝试反向工程事件,,除非有商业上的理由这样做 - 您的使用案例只是为了适应您的新方式会用事件来模拟事物吗?如果没有商业案例,这听起来像是浪费精力。

一下怎么样,表示你的每一个“东西”的当前状态(即骨料,如果你正在使用DDD概念),因为他们在遗留系统现在存在一个开始的事件?然后在其上添加新事件。

I.e.

LegacySystemStateCaptured

NewDomainEvent

AnotherNewDomainEvent

...然后当你重建你的状态,应用LegacySystemStateCaptured事件以及其他人。

+0

不错的答案。我还会补充一点,根据'Snapshot'实现,甚至可以将''LegacySystemStateCaptured'事件中的数据记录为快照事件,因为它可能包含所有典型数据。这样可以节省一次性事件,但这绝对取决于实施。 –

+0

完全是。请随意编辑我的回答与这个建议:) – tomliversidge