Ma question concerne la CQRS (Command and Query Responsibility Segregation) et le mécanisme qui construit le modèle de lecture (views). Autant que je comprends, le modèle de lecture est construit par les gestionnaires d'événements. Ces gestionnaires (également appelés dénormaliseurs) reçoivent des événements de domaine et utilisent ces événements pour générer différentes vues de données.CQRS - dépendances autorisées pour construire le modèle de lecture en utilisant des événements et d'autres sources d'information
Un événement spécifique contient des informations sur les modifications effectuées dans le modèle de domaine. Je pense que cette information ne suffit pas dans certains cas, de construire vue - à savoir pas les champs modifiés, pas des entités modifiées sont portées disparues dans ce cas, etc. Ma question
est:
Est-il permis que denormalizer responsable de la modèle de lecture de bâtiment accède non seulement des événements mais aussi:
- entité modifiée référencés directement dans l'événement?
- a modifié la racine agrégée et toute entité liée à cet agrégat?
- une entité est-elle extraite du référentiel?
- une vue?
Quelle est votre opinion sur les dépendances autorisées pour les gestionnaires d'événements (denormalizers)?
edit: Juste ajouté exemple simple à la question ci-dessus:
Supposons que le modèle suivant:
AR: ProductOffering * Nom * Description * Catégorie * Prix
AR: Client * nom * type * méthode: purchaseProduct (productOffering) qui émet ProductPurchasedByCustomer même t
entité: ProductInstance * client * productOffering
événement: ProductPurchasedByCustomer * customerId * productOfferingId
Vue: ProductInventoryView * customerId * productOfferingId * CustomerType * productOfferingName * productOfferingCategory * prix
Comment générer ProductInventoryView en utilisant uniquement l'événement ProductPurchasedByCustomer? Comment puis-je écrire denormalizer pour afficher des informations sur customerType, productOfferingName etc? Dois-je rechercher des informations supplémentaires sur customerType et productOfferingName à partir de différentes vues?
Je ne suis pas sûr de comprendre correctement. Voulez-vous dire qu'il est possible d'interroger des rapports/vues lors du traitement d'un événement de domaine pour rechercher des informations supplémentaires mais qu'il n'est pas autorisé à accéder au modèle de domaine? – Mariusz