Доменное событие Как получить дополнительные данные?

Я строю систему электронной коммерции с использованием DDD. В этой системе у меня есть два ограниченных контекста: Identity & Access а также Sales,

Клиенты могут зарегистрироваться, заполнив форму со своим именем, адресом электронной почты и паролем. Тогда в 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 контекст?

0

Решение

Я вижу два решения здесь:

  1. Если вы действительно хотите иметь политику домена в I&Чтобы создать пользователя после получения события CustomerWasCreated, вы можете не запрашивать пароль у новых клиентов, вместо этого вы отправите ссылку для активации их учетной записи и введите новый пароль после создания пользователя (неактивного). Эта стратегия используется очень часто, но они не смогут войти в систему до завершения процесса.
  2. Что бы я сделал — поручил эту работу руководителю процесса, который будет координировать работу между двумя БК. ПК узнает пароль и отправит соответствующие команды, которые содержат необходимые данные.

В обоих случаях вы избегаете посылать пароль в Sales BC.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]