域事件如何获取其他数据?

时间:2016-02-26 08:23:20

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

我正在使用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 个答案:

答案 0 :(得分:0)

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

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