CQRS 中一次事务中的多个聚合根创建
我想知道如何在 CQRS 中创建多个聚合根。
示例:我有一个手机聚合根和 Simcard 聚合根。身份证号码 这些聚合应该是订阅聚合根的一部分。
我需要创建一个基于 SimCard 和 Handset 的订阅聚合。系统中不存在 SimCard 和 Handset 聚合。它们是在创建订阅时创建的。 删除订阅后,SimCard 和手机不会被删除。 业务原因:用户可能会在同一手机中插入不同的 SimCard,或者手机支持双 SimCard。
业务规则: 电话号码应该是唯一的。 手机序列号应该是唯一的。 一项订阅与一部手机相关联 一部手机与 1 个或多个电话号码相关联。
Class Handset {
String serialNumber
Handset(UUID id,serialNumber){
super(id);
this.serialNumber=serialNumber;
}
}
Class SimCard{
String phoneNumber
SimCard(UUID id, String phoneNumber){
super(id);
this. phoneNumber= phoneNumber;
}
}
Class Subscription {
UUID id
UUID deviceid
UUID simCardid
Subscription (UUID id, UUID deviceid, UUID simCardid){
Super(id);
This. Deviceid= deviceid;
This. simCardid= simCardid;
}
}
- 隐藏引用的文本 -
- 显示引用的文本
I would like to know how multiple aggregate root are created in CQRS.
Example: I have a handset aggregate root and Simcard aggregate root. The id
from these aggregate should be part of subscription aggregate root .
i need to create a Subscription aggregate based on SimCard and an Handset.SimCard and Handset aggregate do not exist in the system . they are created when Subscription is created .
When Subscription is deleted SimCard and Handset is not deleted.
Business reason: user might insert different SimCard into the same Handset or the handset supports dual SimCards.
business rule :
Phone number should be unique.
Handset serialNumber should be unique.
One subscription is associated with one handset
One handset is associated with 1 or more phone number.
Class Handset {
String serialNumber
Handset(UUID id,serialNumber){
super(id);
this.serialNumber=serialNumber;
}
}
Class SimCard{
String phoneNumber
SimCard(UUID id, String phoneNumber){
super(id);
this. phoneNumber= phoneNumber;
}
}
Class Subscription {
UUID id
UUID deviceid
UUID simCardid
Subscription (UUID id, UUID deviceid, UUID simCardid){
Super(id);
This. Deviceid= deviceid;
This. simCardid= simCardid;
}
}
- Hide quoted text -
- Show quoted text
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以为此使用 Saga。
请参阅:
另请查看 不创建聚合根
You can use a Saga for this.
See:
Also take a look at Don’t Create Aggregate Roots