我的系统有“联系人”的语言,这是一种“幽灵用户”,我们有一些信息——它的验证规则很薄,它的状态主要是联系信息。我们还有一个“用户”的概念,它是经过全面审查和注册的用户。将“用户”视为充实的“联系人”。
我们试图捕捉的生命周期是,一旦有人使用“联系人”的信息注册,“联系人”将被“用户”替换。
我们在系统中有其他聚合根,它们引用指向“Contact”的 UUID 的“ContactId”。当“联系人”注册时,我们想使用“用户”的新概念在域中表示他们,“用户”现在拥有自己的“用户 ID”UUID。
- 我们如何保持仍然通过 ContactID 引用“Contact”的关系,现在通过 UserID 引用“User”?
- 尝试将我的聚合转换为另一个聚合是否存在根本问题?
- 如果是这样,我应该如何为“联系人”->“注册用户”的这个特定生命周期建模?
- 如果答案是将这两个想法合并到一个聚合根中,我如何才能让我的域对象始终有效,尽管在此“联系人”实际注册之前“用户”无效?
附带说明一下,我们将 CQRS/ES 用于整体架构。
谢谢!