【问题标题】:Domain Event How to get additional data?领域事件如何获得额外的数据?
【发布时间】:2016-02-26 08:23:20
【问题描述】:

我正在使用 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 上下文?

【问题讨论】:

    标签: php domain-driven-design domain-events


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多