Ga naar hoofdinhoud

Bounded Context Bridge

Dit hoofdstuk betreft een uitwerking van de contextovergang tussen twee bounded contexten zoals benoemd in de handreiking. Daarbij wordt het concept van een anticorruption layer toegepast: een vertaallaag tussen twee bounded contexten zoals Domain-driven Design dat beschrijft.

Bij een contextovergang is er keuze in waar de vertaling van die overgang wordt gerealiseerd: aan de kant van de producerende bounded context – die de verstrekking al aanpast aan de taal van de afnemende context – of aan de kant van de afnemende bounded context, die de vertaling zelf uitvoert. Onderstaande figuur toont beide routes.

Producerende en afnemende bounded context, met twee routes voor de contextovergang: een projectie op maat en de bounded context bridge

Vertaling via een projectie op maat

De afnemende bounded context kan de producerende bounded context vragen een projectie bij te houden die al in haar eigen taal is gesteld, aan de hand van een projectiespecificatie die zij zelf aanlevert. De producerende bounded context onderhoudt deze projectie naast haar eigen projecties, op basis van hetzelfde gevolgenjournaal. Op aanvraag levert zij de inhoud ervan als antwoordbericht; hiermee gedraagt de producerende bounded context zich, voor deze ene projectie, als een register dat een afnemer bedient.

De afnemende bounded context bevraagt deze projectie op eigen initiatief – getriggerd door een eigen aanleiding, bijvoorbeeld een interval – en ontvangt zo'n antwoordbericht. Omdat de inhoud al in haar eigen taal is gesteld, kan zij deze rechtstreeks gebruiken om eigen commando's te vormen en die op de gebruikelijke manier te verwerken tot gevolgen, zonder tussenkomst van een bridge.

Vertaling via de bounded context bridge

Naast een projectie op maat – of in plaats daarvan – kan de producerende bounded context notificaties uitgeven: verstrekkingen die zij op eigen initiatief verzendt, opgesteld in haar eigen taal. Deze notificaties komen bij de afnemende bounded context binnen bij de bounded context bridge: het punt waar de contextovergang wordt gerealiseerd.

De bridge vertaalt een notificatie naar de begrippen, terminologie en eenheden van de afnemende bounded context. Dat kan op twee manieren.

Type 1: rechtstreekse vertaling

De vertaalregel zet de notificatie in één stap om in een gevolg. Dit patroon is geschikt wanneer de vertaalslag beperkt is: het onderliggende commando blijft daarbij impliciet.

Type 2: vertaling via een expliciet commando

De vertaalregel zet de notificatie om in een zelfstandig commando, dat vervolgens – net als andere commando's binnen de afnemende bounded context – apart wordt verwerkt tot een gevolg.

In de meeste gevallen vertaalt de vertaalregel de notificatie volledig: het commando bevat dan uitsluitend begrippen uit de eigen bounded context, en de producerende bounded context is daarna niet meer zichtbaar.

Bij complexe vertalingen, of wanneer bounded contexten sterk van elkaar afhankelijk zijn, kan het nodig zijn om begrippen uit de producerende bounded context verder mee naar binnen te nemen: het commando gebruikt dan nog begrippen uit die externe context, en de uiteindelijke vertaling vindt pas plaats bij de verwerking van het commando.

Dit patroon is uitgewerkt in de BrkBoundedContextBridge en de BelangenMutatieCommandHandler, en is in de praktijk te zien in het voorbeeld belang overgegaan naar aanleiding van eigendomsoverdracht.