Modelleerpatronen (4): Eventprocessing op objectniveau

 
18 juli 2011

Titel: eventprocessing op objectniveau

Doel: Als een model grote hoeveelheden events moet kunnen verwerken die voor verschillende berekeningen relevant zijn kan het handig zijn het uitgangspunt te hanteren dat alle objecten in de boom alle events ontvangen. Zo kan elk object zelf een stukje processing verzorgen en hoef je als ontwikkelaar niet na te denken over routering. Een soort EDA om laag abstract niveau.

Motivatie: Complex Event Processing (CEP) en EDA (Event Driven Architectures) worden veel toegepast om communicatie tussen systemen op een schaalbare manier te vereenvoudigen. Om deze krachtige uitgangspunten ook te kunnen toepassen binnen de scope van één applicatie is een mechanisme benodigd om de events gegarandeerd te verspreiden onder alle aanwezige objecten.

Toepasbaarheid: Applicaties die grote hoeveelheden events moeten verwerken die ieder op mogelijk verschillende manieren en op verschillende plaatsen in het model verwerkt moeten kunnen worden, waardoor routering van events mogelijk een complex te beheersen aspect wordt.

Voorbeeld Door een model hierarchisch te ordenen onder één of een beperkt aantal root aggregaten is het mogelijk elk object verantwoordelijk te laten zijn voor verspreiding van de events naar alle geassocieerde objecten (children). Door dit in een layer supertype te encapsuleren is het distributiemechanisme als een aspect los te implementeren als een ‘broadcast’-bus. Door dit supertype goed te abstraheren is zelfs een klein frameworkje te realiseren waardoor door overerving het distributiemechanisme automatisch wordt toegepast (bijvoorbeeld via reflection). Een concrete uitwerking wil ik op verzoek wel posten.

Concreet is dit goed toe te passen op systemen met slechts een beperkt aantal objecten zoals in het eerder genoemde patroon ‘niet-groeiende objectbomen’ genoemd. Ik som hem toch als apart patroon op omdat dit meer een specialisatie hiervan is.

Gerelateerd aan Zoals eerder genoemd het patroon niet-groeiende objectbomen. Dit is echter een onderdeel daarvan wat een event-distributiemechanisme apart encapsuleert.


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Architectuur, Development