我一直在阅读很多关于事件采购和CQRS的精彩文章,这个概念很吸引人,但这些例子通常都是超简单的领域(例如发票,会议活动,一组博客帖子和他们的相关评论)。
假设我们有一个更复杂的域名,就像我们有更深层次的关系层次的保险单一样:
class Policy {
List<Driver> drivers
List<Vehicle> vehicles
List<Coverage> coverages
}
司机可能有地址和联系信息,承保范围有子保险等。
我可以分别在这些对象中的每一个上创建类似CRUD的事件(例如DriverCreate,DriverUpdate),但是如果我们想要将策略的状态倒回到特定日期,我们如何知道要回放哪些事件?
一般来说,是否有任何资源可以描述如何在此开发范例中处理关系?
答案 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])
第二个选项更加强大,可让您获得倒带所需的数据。