Я новичок в области источников событий и DDD и пытаюсь создать простое приложение, чтобы узнать больше, но я не могу понять, как смоделировать отношения между двумя агрегатами.
Идея состоит в том, чтобы позволить компаниямсоздать действия, которые затем могут быть найдены пользователями.
Я хочу иметь возможность применять правило, согласно которому у компании может быть только столько активных действий в зависимости от уровня их членства.
Мой первыйподход будет состоять в том, чтобы Компания была совокупным корнем, который содержал бы список видов деятельности и легко контролировал это.Однако это означает, что мне придется пройти через Comapny Aggregate, чтобы получить доступ к каждому действию, что не является идеальным, поскольку большинство действий против действия не зависит от компании.
Мой второй подход состоял в том, чтобы иметь отдельную компаниюАктивность агрегации.Это означает, что мне сначала нужно вызвать событие ActivityCreated, а затем событие ActivityAddedToCompany, которое вызовет исключение, если компания уже полна Activity.Этот подход кажется лучше, но я не уверен, что необходимость в ActivityAddedToCompany - это признак того, что я неправильно разделил агрегаты, как в случае удачного пути, ActivityCreated и ActivityAddedToCompany всегда будут храниться после друг друга.
Isвторой подход лучше, или я упускаю что-то базовое в домене Driven Design?