Мой вопрос относится к CQRS (разделение ответственности на команды и запросы) и механизму построения модели чтения (представлений). Насколько я понимаю, модель чтения строится обработчиками событий. Эти обработчики (также называемые денормализаторами) получают события домена и используют эти события для построения различных представлений данных.
Конкретное событие несет информацию об изменениях, сделанных в модели предметной области. Я думаю, что в некоторых случаях этой информации недостаточно для построения представления - т.е. в таком случае отсутствуют неизмененные поля, неизмененные объекты и т. Д.
Итак, мой вопрос:
Разрешено ли денормализатор, ответственный за построение, читать модель обращается не только к событиям, но также:
Что вы думаете о разрешенных зависимостях для обработчиков событий (денормализаторов)?
edit: Просто добавил простой пример к вопросу выше:
Предположим, что следующая модель:
AR: ProductOffering * имя * описание * категория * цена
AR: Клиент * имя * тип * метод: PurchaseProduct (productOffering), излучающий ProductPurchasedByCustomer, событие
, сущность: ProductInstance * клиент * productOffering
, событие: ProductPurchasedByCustomer * Пользовательский ИД * productOfferingId
view: ProductInventoryView * Пользовательский ИД * productOfferingId * Тип клиента * productOfferingName * productOfferingCategory * price
Как создать ProductInventoryView, используя только событие ProductPurchasedByCustomer? Как я могу написать денормализатор, чтобы отображать информацию о customerType, productOfferingName и т. Д.? Следует ли мне искать дополнительную информацию о customerType и productOfferingName из разных представлений?