0

我正在使用 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上下文中获取此密码?

4

1 回答 1

0

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

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

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

于 2016-02-26T12:12:27.230 回答