我有一个关于cqrs架构上涉及多个聚合的预测的问题。
例如,假设我有两个聚合
WorkItem
和
Developer
以下事件按顺序发生(但不是立即)
-
工作项已创建(工作项ID)
-
WorkitemTitleChanged(工作项ID,标题)
-
developer已创建(developerID)
-
developerMechanged(developerID,名称)
-
工作项已分配(工作项ID,developerID)
我希望创建一个作为开发人员工作项“内部连接”的投影:
| WorkItemId | DeveloperId | Title | DeveloperName | ... |
|------------|-------------|--------|---------------|-----|
| 1 | 1 | FixBug | John Doe | ... |
我做预测的方式是渐进式的。也就是说,我从数据库中加载保存的投影,并在它们出现时应用其余的事件。
我的问题是,负责在投影表上创建行的事件是
WorkItemAssigned
. 但是,该事件不包含以前事件(工作项标题、开发人员名称等)中所需的信息。
以便在规定时间内获得所需信息
工作项已分配
,我必须加载
全部的
事件存储中的事件,保留
状态
所有人的记忆
WorkItems
和
Developers
所以我在
工作项已分配
事件到达。
当然,我可以有一个投影
Workitem
,另一个用于
开发商
并查询它们以检索它们的最后状态。但这似乎需要做很多工作,如果我要分别为每个聚合创建投影,我不妨创建一个数据库视图来
内连接
他们(事实上,我就是这么做的。)
我不是手工完成的,我目前正在使用一个很好的框架
EventFlow
,但这并不能指导我回答这个问题。
这是一个关于cqrs基本原理的问题,我觉得我在这里遗漏了一些东西。