Методы агрегата полностью полагаются на события¶
Чтобы обработать запрос и обновить агрегат, бизнес-логика вызывает командный метод из его корня. В традиционном подходе такой метод проверяет свои аргументы и обновляет одно или несколько полей агрегата. При порождении событий командные методы должны генерировать события. Результатом вызова командного метода агрегата является последовательность событий, описывающих изменения, которые нужно применить к агрегату, чтобы перевести его в новое состояние.

Порождение событий превращает командный метод в два и более метода. Первый принимает команду и определяет, какое изменение состояния нужно выполнить, проверяет аргументы и не меняя состояния агрегата, возвращает список событий, описывающих переход состояния. Если команду нельзя выполнить, генерируется исключение.
Остальные методы принимают в качестве параметра событие определенного типа и обновляют агрегат. Для каждого события — свой метод. Важно отметить, что эти методы не могут отказать, так как событие представляет изменение состояния, которое уже произошло.
Такие методы могут быть оформлены в виде ряда перегруженных методов с именами, скажем, process() для методов первого этапа (перегрузка засчёт разных классов команд), и apply() для методов второго этапа (перегрузка засчёт классов событий).
Дата создания : 29 июля 2022 г.