领域事件如何获取额外的数据?

Domain Event How to get additional data?

我正在使用 DDD 构建电子商务系统。在这个系统中,我有两个限界上下文:Identity & AccessSales.

客户可以通过填写带有姓名、电子邮件和密码的表格来自行注册。然后在 Sales 上下文中,我注册了一个客户:

$customer = new Customer($request->name, $request->email);
$this->customers->add($customer);

Customer 聚合引发了一个 CustomerWasRegistered 事件。

Identity & Access 上下文对此事件做出反应并为该客户创建 SystemUser 聚合:

$user = new SystemUser($email, $password);
$this->users->add($user);

我的问题:因为 Customer 集合不知道密码(CustomerWasRegistered 事件也不知道)。如何从 Identity & Access 上下文的请求中获取此密码?

我在这里看到两个解决方案:

  1. 如果您真的想在 I&A 中有一个在收到 "CustomerWasCreated" 事件后创建用户的域策略,您可能不想向新客户询问密码,而是发送一个 link 在创建用户(非活动)后激活他们的帐户并输入新密码。此策略经常使用,但在流程完成之前他们将无法登录。
  2. 我会做什么 - 将这项工作委托给流程经理,该流程经理将协调两个 BC 之间的工作。 PC 将知道密码并将发送包含必要详细信息的适当命令。

在这两种情况下,您都避免将密码发送到 Sales BC。