事件采购具有多层对象组合的域

时间:2014-05-04 14:19:24

标签: scala cqrs event-sourcing

我一直在阅读很多关于事件采购和CQRS的精彩文章,这个概念很吸引人,但这些例子通常都是超简单的领域(例如发票,会议活动,一组博客帖子和他们的相关评论)。

假设我们有一个更复杂的域名,就像我们有更深层次的关系层次的保险单一样:

class Policy {
   List<Driver> drivers
   List<Vehicle> vehicles
   List<Coverage> coverages
}

司机可能有地址和联系信息,承保范围有子保险等。

我可以分别在这些对象中的每一个上创建类似CRUD的事件(例如DriverCreate,DriverUpdate),但是如果我们想要将策略的状态倒回到特定日期,我们如何知道要回放哪些事件?

一般来说,是否有任何资源可以描述如何在此开发范例中处理关系

1 个答案:

答案 0 :(得分:1)

我已经在这样的系统上工作,即使不是为了保险;-) 我们选择的策略如下。我们通过标识符链接了我们的活动。为此,您的Policy类将添加一个字段“id”。完成后,可以创建如下事件:

case class PolicyDriverAdded(id: UUID, driver: Driver)
case class PolicyDriverRmoved(id: UUID, driver: Driver)

这是最简单的策略。另一个是将完整的集合放入你的活动......两次:

case class PolicyDrivesChanged(id: UUID, oldDrivers: List[Driver], newDrivers: List[Driver])

第二个选项更加强大,可让您获得倒带所需的数据。