Агрегировать, DomainEvent с Prooph

Я разрабатываю приложение, которое очищает HTML-каналы после аутентификации. Эти веб-сайты поддерживают только аутентификацию по электронной почте и паролю, но для некоторых интеграций может потребоваться дополнительная информация. Так что мой вопрос теперь конкретный, я должен получить при создании событий и агрегатов домена? Я работал с Prooph и создал простые агрегаты и доменные события, которые имеют дело только с одним типом сущности. Но теперь мне интересно, должны ли агрегаты и доменные события быть конкретными для этих сторонних скребков веб-сайтов. Должно ли быть событие для скребка фида, или создание общего события и агрегирование лучше? Свойства каждого агрегата могут отличаться.

class WebsiteA extends AggregateRoot
{
private $id;

private $email;

private $password;

public static function initiate($id, $email, $password)
{...}
}

class WebsiteB extends AggregateRoot
{
private $id;

private $email;

private $password;

private $accountIds = [];

private $userSalt;

public static function initiate($id, $email, $password, $accountIds, $userSalt)
{...}
}

Тогда что-то подобное для доменных событий

class WebsiteAWasInitiated extends AggregateChanged
{
public static function withUser($id, $email, $password){}
}

class WebsiteBWasInitiated extends AggregateChanged
{
public static function withUser($id, $email, $password, $accountIds, $userSalt){}
}

Или было бы лучше создать единое агрегированное и доменное событие? Какие оба сайта используют. Имейте в виду, список поддерживаемых сайтов будет расти.

class WebsiteScraper extends AggregateRoot
{
private $id;

private $credentials;

public static function initiate($id, $credentials)
{...}
}

class WebsiteScraperWasInitiated extends AggregateChanged
{
public static function withUser($id, $credentials){}
}

0

Решение

Это больше вопрос, связанный с DDD, и ответ «это зависит». Вырастет ли количество скребков настолько, что вы не сможете добавить код для каждого из них? Затем попробуйте использовать универсальный скребковый агрегат. Если количество скребков ограничено, вы можете использовать индивидуальные для каждого из них.

1

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

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