在查看上面标题中提到的术语时,我正在努力解决一些实现细节。
有人可以告诉我,我的解释是否正确吗?
作为参考,我看一下CRM域
作为 AggregateRoot ,我可以看到客户。
实体可能包含街道,邮政编码等地址。
现在有类似联系和活动的内容,这至少应该是聚合。对?现在,如果联系人和活动具有复杂的业务逻辑。例如,“每次创建类型订单的联系人时,都应该启动订单工作流程”
那么Contact需要是一个聚合根吗?可能由此产生的实施影响是什么?
在查看和事件采购时,每个聚合都会有自己的流吗?在这种情况下,客户可以进行数千项活动。
如果有人可以指导我的理解是正确的,哪些部分与我的共同解释不同,那就太棒了。
答案 0 :(得分:2)
“至少聚合”是什么意思?
聚合是一组一个或多个连接的实体。聚合只能从其根实体访问,也称为聚合根。聚合定义了必须始终保留的实体的事务边界。 Jimmy Bogard对聚合here有很好的解释。
使用事件源时,每个聚合都应该有自己的流。该流用于构造聚合,没有理由让几个聚合使用相同的流。
您应该尝试保持小的聚合。如果您希望您的客户对象有数千个活动,那么您应该查看是否可以将活动设计为单独的聚合,只要其边界确保您不会使系统处于无效状态。