Event Driven Architecture (EDA)
Goed luisteren en adequaat handelen.
Technologie
heeft een korte houdbaarheid. In de ICT zien we dat terug in de vorm
van steeds weer nieuwe paradigma’s in de software-ontwikkeling. De
jongste ontwikkeling is wat dat betreft Event Driven Architecture,
kortweg EDA. EDA is enige jaren geleden geruisloos het Oracle domein
binnengeslopen, de Oracle EDA Suite zag het levenslicht al in 2007.
Maar inmiddels is er een bepaalde kritieke massa bereikt want we zien
anno 2009 dat het aantal toepassingen gebaseerd op EDA wereldwijd een
vlucht begint te nemen. Reden voor Harold Gerritsen om eens uitgebreid
stil te staan bij EDA: wat is het, hoe raakt het ons en wat kunnen we
er van verwachten in de toekomst.

Afb. 1: EDA zichtbaar in actie. Dashboard van slimme energiemeters.
Het jongste paradigma in de ICT
Eerst nog even terug naar hoe het allemaal begon, de silo’s of stovepipes. De fysieke kaartenbakken waren toch wel erg onhandig en zodra de ontwikkeltools dat enigszins mogelijk maakten ontstonden de eerste applicaties. In feite niets meer en niets minder dan de electronische variant van de kaartenbak: rechttoe-rechtaan onderhoud van de gegevenselementen. Die gegevenselementen sloegen we vervolgens op in een DBMS, die later evolueerde tot een RDBMS met bijbehorende vraagtaal. Toen we de backend op orde hadden gingen we ons focussen op de frontend; we trokken daarbij de presentatielaag en de business logica uit elkaar en gingen die zo slim mogelijk verdelen over onze hardware. Maar één ding bleef: het waren op maat gemaakte oplossingen om een bepaald bedrijfsproces te ondersteunen. Het gegeven ‘Medewerker’ kon zo best wel ‘ns redundant worden beheerd in de HRM applicatie, de applicatie van Facilitair Beheer (de toegangspas), de Wagenparkapplicatie etc. etc. Dramatisch voor de synchronisatie tussen deze applicaties en dit riep om integratie.Na het ontwikkelen van de stovepipes ontstond de Service Oriented Architecture, kortweg SOA. Deze architectuur gaat uit van een ‘nieuw middelpunt van het heelal’, namelijk de integratie zelf en niet langer de applicaties. Dat betekent dat we idealiter bijvoorbeeld nog maar één service ‘MaakMedewerker’ binnen een bedrijf hebben die vanuit alle applicaties wordt gebruikt. Het begrip applicatie is wat dat betreft ook rekbaar, want wat is een applicatie nog als het volledig is opgebouwd uit (‘cq. gebruik maakt van’) dezelfde services die ook in andere applicaties worden gebruikt? Bij dit nieuwe paradigma ontstonden natuurlijk ook hele nieuwe uitdagingen zoals beheer van een exploderend aantal componenten, autorisatie op al die componenten, encryptie van de verstuurde aanroepen naar services die bijvoorbeeld via internet van buiten het bedrijf werden afgenomen etc. De producten die daar voor nodig waren noemde Oracle Fusion Middleware, en werden geleverd in de SOA Suite. De laatste ontwikkelingen binnen SOA waren een optelsom van de standaardisering van de aanroep van services (SOAP), de zogenaamde WebServices, en het standaardiseren van een processpecificatietaal waarin deze services konden worden aangeroepen, de taal Business Process Execution Language, kortweg BPEL. Vanaf dat moment konden er m.b.v. modelleringstools op een grafische wijze business processen worden gemodelleerd, die vervolgens gekoppeld konden worden met de services uit het applicatielandschap.
Na de professionalisering van de ICT binnen bedrijven door het SOA paradigma, doet nu Event Driven Architecture, kortweg EDA z’n intrede. Zoals zo vaak maakten de analisten zoals Gartner ook hier weer de geesten rijp. Omstreeks 2000 (u weet wel, zo rond de internet hype) introduceerde Gartner de term ‘Zero Latency Enterprise’, om dit een paar jaar later te vervangen door het iets gewijzigde begrip ‘Real Time Enterprise’1. Zoals de naam al aangeeft wordt hiermee bedoeld de reactiesnelheid van organisaties op prikkels en gewijzigde omstandigheden die relevant zijn voor die bedrijven. Veel automatiseerders kennen dit concept al uit de ICT. Je zou van een bedrijf een state-diagram kunnen tekenen en dat wat een statusovergang kan veroorzaken is dan een optredende gebeurtenis ofwel event. Aldus beschouwd worden bedrijven meer gebeurtenis-gedreven ofwel Event Driven. EDA is dus niet zozeer een vervanging van SOA, maar een aanvulling erop. SOA zegt iets over de binnenkant van een applicatie, zijnde de gelaagdheid en het opgebouwd zijn uit grove en fijnmazige services. EDA trekt het breder. Applicaties die van binnen al dan niet volgens een SOA zijn opgebouwd, kunnen een beter luisterend oor hebben voor de wereld waarin ze opereren door toepassen van EDA concepten. Doordat tegenwoordig meer en meer contextinformatie realtime gemeten wordt en digitaal beschikbaar is, is het niet verwonderlijk dat de belangstelling voor EDA zo toe begint te nemen.
EDA
Bedrijfskundig gezien is EDA opportuun in situaties waarin een bedrijf commercieel voordeel kan behalen uit het slim omgaan met wijzigingen in de wereld om haar heen. Dit komt dan neer op concurrentievoordeel door beter geïnformeerd sneller te acteren. De andere toepassing is het beperken van de nadelen voor een bedrijf door snel te acteren. Dergelijke situaties zitten vooral in de hoek van risico management. Voor een financiële instelling is het bijvoorbeeld heel belangrijk ‘wat de rentestanden doen’. De rentestand heeft vaak consequenties voor veel systemen van zo’n instelling. En het gaat daarbij niet alleen om de feitelijke rentestand, d.w.z. de actuele waarde, maar ook om het patroon volgens welke die waarde zich in een bepaald tijdswindow heeft ontwikkeld. Soms is een bepaalde rentestand op zich niet alarmerend, maar wèl als onderdeel van een bepaald patroon. Zo zie je dat het aandachtsgebied EDA inzoomt op de events en deze verder analyseert.
Business Events
In algemene zin zijn er twee soorten events relevant binnen EDA: de (simpele) Business Event, en de Complexe Event. De Business Event kenden we eigenlijk ook al voor EDA z’n intrede deed. De database trigger is als functionaliteit aan de database toegevoegd om dit concept te ondersteunen. In de tijd dat applicaties rechttoe-rechtaan onderhoud op gegevenselementen deden, was een database trigger heel bruikbaar om een business event te implementeren. Het plaatsen van een order gebeurde telefonisch of door het opsturen van een bestelformulier (de traditionele kanalen) en werd in beide gevallen ingetypt door een medewerker van het leverende bedrijf. Het vastleggen van het gegevenselement ‘Order’ met z’n ‘Orderregels’ was dan een goede afspiegeling van het business event ‘Order ontvangen’, waarop door het systeem dan vervolgactie kon worden ondernomen. Maar inmiddels opereren we minder en minder volgens de traditionele kanalen. Vanuit Business to Business (B2B) zakendoen is men al langer bezig met ketenintegratie en zelfs consumenten (B2C) kiezen steeds vaker voor de webwinkel bij het doen van aankopen. Daarom is de (simpele) business event zowel terug te vinden in het traditionele paradigma (stovepipes), in SOA, als in EDA.
Complexe Events
In EDA kunnen we de twee soorten events (business danwel complex) het gemakkelijkst relateren aan het integratiepatroon wat van toepassing is. De meest relevante zijn het zogenaamde Request-and-Reply en het Sense-and-Respond patroon. Bij Request-and-Reply is er sprake van vraag en antwoord van vooraf gedefinieerde berichten, bijvoorbeeld Order en Orderbevestiging. In de B2B ketenintegratie zagen we dit terug in standaarden zoals EDI en (met de opkomst van XML) in standaarden als ebXML. Met de huidige middleware kan het electronisch ontvangen van een dergelijk bericht, bijvoorbeeld ‘Order’, worden gezien als het business event ‘Order ontvangen’. We hoeven nu niet meer te wachten tot het in de database is vastgelegd alvorens we electronisch kunnen vaststellen dat het event zich heeft voorgedaan. Uiteraard is het ontvangen van aangeboden berichten niet het enige event dat een business event is. Een business event is immers in de meest brede zin een optredende gebeurtenis die voor de business van belang is.
Het Sense-and-Respond patroon is van een heel andere orde en zagen we in het verleden alleen in heel specifieke toepassingen. Bij Sense-and-Respond wordt er op iets gemeten en naar aanleiding daarvan bijbehorende actie ondernomen. Bij het merendeel van de Sense-and-Respond patronen is er echter sprake van een volstrekte chaos van optredende gebeurtenissen. Dat wil zeggen: vaak veel, soms zelfs heel veel gebeurtenissen (tot wel 1 miljoen per seconde) en volstrekt onvoorspelbaar qua moment van optreden en qua verloop van gemeten waarden. De uitdaging daarbij is om de essentie te halen uit deze ruwe gebeurtenissen en dat te vertalen naar events die relevant zijn voor de business. De ruwe gebeurtenissen noemen we Complexe Events en de vertaalde, relevante events zoals we inmiddels weten, de Business Events. Voor deze vertaling maak je gebruik van een Complex Event Processor, zoals we later zullen zien. Uiteraard zijn er ook eenvoudigere situaties van het Sense-and-Respond patroon. Hierbij treden events op die direct als kant en klare business events kunnen fungeren.
Voorbeelden van EDA toepassingen
Het merendeel van de huidige EDA-toepassingen zijn zuivere voorbeelden van EDA. De reden daarvoor is voor de hand liggend: toepassen van het EDA-concept was hier de enige manier om de betreffende vraagstukken op te lossen. Dit is echter het voorland voor de reguliere applicaties. De uitdaging voor business analisten zit hem er in dat er ver genoeg out-of-the-box wordt gedacht om de mogelijkheden van EDA te zien als uitbreiding van bestaande oplossingen. Om enig gevoel te krijgen bij het werkveld van EDA zullen we een aantal voorbeelden de revue laten passeren die al vormgegevens zijn in de vorm van een EDA-toepassing, of waarbij dat zou kunnen worden gedaan.
Tellen van events: Evenementen
De meest eenvoudige toepassing is die waarbij het event eigenlijk geen specifieke informatie levert, anders dan het feit dat het is opgetreden. Een goed voorbeeld hiervan is de toepassing van het tellen van iets dat optreedt, bijvoorbeeld het aantal personen dat via een ingang een evenemententerrein heeft betreden. Een openbaar parkconcert kan bijvoorbeeld gratis zijn zodat geen toegangscontrole nodig is. Maar in verband met evacuatie kan het tellen van de bezoekers toch een vereiste zijn. Het event is het feit dat er iemand het toegangspoortje is gepasseerd, of het een man, een vrouw, een jongen of een meisjes betreft, blijft volstrekt onbekend. In combinatie met het tellen zouden de ingangen geblokkeerd kunnen worden zodra een vooraf ingesteld maximum aantal bezoekers het terrein heeft betreden.
Tellen van events: Conversiefactor Retail
In de Retail, met name warenhuizen, gebeurt hetzelfde. Daar wordt het aantal bezoekers van een winkel geteld -de droge klik die je vroeger vaak kon horen als je een winkel betrad- om dit te kunnen vergelijken met het aantal kopende bezoekers (=aantal kassabonnen). Deze verhouding (jargon: conversiefactor) geeft aan in hoeverre de bezoeker is verleid om aankopen te doen. Het aantal bezoekers wordt daarbij bepaald door seizoensinvloeden en marketing. Het deel daarvan dat daadwerkelijk een aankoop doet wordt bepaald door de beleving van de winkel (assortiment, uitstraling, sfeer, overzichtelijkheid, route) en of er eventueel andere verkoopstimulerende attributen worden toegepast zoals geurpalen. Bij het bepalen van het effect van veranderingen in deze variabelen is de conversiefactor en daarmee (deze eenvoudige vorm van) EDA onmisbaar.
Grensbewaking
Een iets ingewikkelder voorbeeld iets dichter bij huis is de thermostaat. De traditionele thermostaat is geassembleerd uit mechanische onderdelen en sluit op een vooraf ingestelde temperatuurgrens een stroomkring kort. In feite wordt er een continue stroom gebeurtenissen (de actuele temperatuur) gemeten en bij het bereiken van de grenswaarde wordt actie ondernomen. Hierbij is dus niet alleen het optreden van de gebeurtenis van belang, maar ook de actuele waarde. Anders gezegd: de complexe events ‘de gemeten temperatuur op tijdstip x’ wordt door de thermostaat op basis van een ingebouwd algoritme vertaald naar het business event ‘temperatuur y bereikt’.
Tracking en tracing: RFID
In de logistiek wordt al tientallen jaren gebruik gemaakt van EDA concepten. In de jaren zeventig leverde N.V. Nederlandsche Apparatenfabriek (NEDAP) al black boxes (plm. 30x20x15cm) die onder een vrachtwagen gemonteerd konden worden en die, zodra je daar een specifiek radiosignaal naar toe zond, zich konden identificeren door het beantwoorden van het signaal met een unieke identificatie voor desbetreffende box. Hierdoor was het achteruit inparkeren van een vrachtwagen bij een laaddeur van een distributiecentrum al voldoende om volautomatisch de juiste lading vanuit het magazijn te laten aanleveren. Hiermee was deze technologie de voorloper van RFID.

Afb. 2: Een moderne RFID tag in de vorm van opplakbare folie.
De laatste jaren wordt Radio Frequency IDentification (RFID) meer en meer toegepast. De RFID tag is in feite de geminiaturiseerde versie van de black box van NEDAP. De tag heeft het formaat (zelfs de dikte komt overeen!) van een postzegel. In afbeelding 2 zien we zo’n tag. Het grootste deel van de tag bestaat uit de spoelen die tezamen de antenne vormen. Aan deze antenne zit (links op de foto) de chip die het toegezonden signaal ontvangt, uit dit signaal en passant ook de benodigde hoeveelheid energie put om te functioneren, en een unieke identificatie terugzendt. In combinatie met de juiste infrastructuur van tagreaders en event processing software zoals de Complex Event Processor in Oracle EDA Suite, kan een getagt object gedurende z’n hele mechanische of biologische leven worden gevolgd. Op internet is een informatieve Powerpoint presentatie terug te vinden met de nodige uitleg en achtergronden van RFID2. Door de miniaturisering van de tags in combinatie met massaproductie kost een enkele tag tegenwoordig al minder dan 10 eurocent. Dit is voor een aantal ketens, zoals het Amerikaanse Wall-Mart, al aanleiding om elk product in de winkel uniek te labellen. Dit bewijst z’n diensten bij het volgen van het transport door de gehele distributieketen, dus van producent tot en met de winkel. Voor levensmiddelen kunnen b.v. gemeten omgevingscondities worden geregistreerd en bewaard op de chip om bij bederf de verantwoordelijke partij aansprakelijk te kunnen stellen. Maar uiteraard bewijst RFID ook z’n toegevoegde waarde bij diefstalpreventie in de winkel.
Tracking en tracing: Barcode
Een
ander voorbeeld waar met name de reislustigen onder ons veel mee te
maken hebben zijn de volautomatische bagageafhandelingssystemen op de
vliegvelden. Het Nederlandse bedrijf Vanderlande in Veghel is een van
de grootste turnkey aanbieders van volautomatische transportsystemen
voor bagage. Eenmaal bekend met het logo kom je ze over de hele wereld
tegen. Bij bagageafhandeling leest op verschillende plaatsen in de
keten een barcodereader de bij het inchecken aan de koffer bevestigde
barcode-tag. De complexe events zijn in dit geval de bij een bepaalde
lezer waargenomen passage van unieke bagagestukken. Door het toepassen
van bepaalde algoritmen kunnen patronen worden herkent en vertaald in
business events. In het geval van bagage dient een uniek stuk
bijvoorbeeld binnen 1 minuut bij een volgende reader te arriveren,
anders is het zoekgeraakt en dient er een alert te worden verstuurd
naar een medewerker om de bagageband te controleren.Afb. 3: Geïnspireerd door de actualiteit. (Bron: Nu.nl).
Tracking en tracing: De slimme meters van Maria van de Hoeven
Op moment van schrijven van dit artikel –7 april 2009– las ik het persbericht (zie afbeelding 3) waarin werd medegedeeld dat de verplichte slimme meters van Van De Hoeven het niet hadden gehaald. Geïnspireerd door de actualiteit kon ik het niet nalaten deze toepassing van EDA in een demo werkend te krijgen en zo alle aspecten van de EDA Suite zelf te kunnen beoordelen. Als het aan Maria van de Hoeven lag zouden alle Nederlandse huishoudens worden verplicht om zogenaamde slimme meters te plaatsen waarmee het electriciteitsgebruik zou kunnen worden gemeten. Vanuit milieu-oogpunt een loffelijk streven, maar het staat op gespannen voet met de privacy. Het idee van de meters was dat deze op afstand konden worden uitgelezen en dat op basis van deze informatie besparingsadviezen aan de burger zouden kunnen worden gegeven. Maar wat uiteraard ook zou kunnen, is deze informatie te relateren aan metingen bij de grotere energiedistributiepunten of zelfs bij de energiecentrales zelf. Er wordt in de energiemarkt veel geld verdiend met het juist prognostiseren van het gebruik waarmee het afgepast inkopen van elektriciteit mogelijk wordt gemaakt. Energie handelsmaatschappijen moeten gigantische boetebedragen betalen als zij aanzienlijk meer afnemen dan wat is ingekocht bij de energieproducent. Het is de energiebedrijven er veel aan gelegen om hier meer grip op te krijgen. In afbeelding 1 is een BAM dashboard te zien waarin het gebruik wordt gevisualiseerd dat bij slimme meters in onderstations en bij huishoudens is gemeten. Hierbij is achter de schermen een scala aan Oracle software toegepast. De belangrijkste componenten hiervan zijn de Oracle Complex Event Processor in combinatie met Oracle BPM en natuurlijk Oracle BAM. Bij gebrek aan slimme meters hebben we natuurlijk moeten volstaan met de simulator, een javaprogramma die een datafile uitleest en in de opgegeven snelheid publiceert richting de Event Processor. Afbeelding 4 geeft naast de informatie op de analoge klokken de gemeten waarden in meer detail waarbij er door de waarden gebrowsed kan worden.
Afb. 4: Detailweergave in BAM Dashboard van gemeten energiewaarden.
…en nog veel meer
De hiervoor genoemde voorbeelden zijn beschreven in volgorde van complexiteit. Inmiddels is EDA zo volwassen geworden, dat we in meer en meer industrietakken ook in de reguliere business processen de meest ingewikkelde toepassing van EDA zien terugkomen. Dat wil zeggen: de variant waarbij we de optredende events proberen te correleren en door het herkennen van patronen de events als het ware “veredelen tot informatie”. Het betreft dan gebieden zoals risico management, fraude detectie, intrusion detectie, compliance etc.
De EDA Suite
Na deze opsomming van voorbeelden van EDA concepten is het tijd om de brug te slaan naar de voor deze toepassingen benodigde software. Hiervoor heeft Oracle de EDA Suite samengesteld. Deze bevat een viertal producten waarvan we er al drie kennen uit andere suites. De onderdelen zijn respectievelijk:
· Business Activity Monitoring (BAM),
· Oracle Service Bus (OSB)
· Business Rules (BR)
· Complex Event Processor (CEP)
De drie oude bekenden, BAM, OSB en BR heb ik al eerder uitgebreid de revue laten passeren in Optimize jaargang 9, nummer 4 (september 2006), bij mijn beschouwing van de SOA Suite. Sindsdien is er natuurlijk wel het een en ander veranderd aan deze producten. BAM is vooral fraaier gaan ogen, dat is uiteraard essentieel voor een product ‘dat het van z’n uiterlijk moet hebben’. OSB doet conceptueel hetzelfde als voorheen de ESB, maar iedereen weet inmiddels dat Oracle haar eigen ESB niet langer als strategisch bestempeld (maar nog wel volledig support uiteraard). De bus die sinds de overname van BEA als strategisch product is gepositioneerd is de BEA AquaLogic Servicebus, omgedoopt in Oracle Service Bus. BR is sinds drie jaar geleden niet wezenlijk veranderd, maar mijn verwachting is dat dit met de overname van Haley3 eind oktober 2008 zeker gaat gebeuren in de nabije toekomst. Voor de geïnteresseerde lezer is even Googlen op ‘business rules haley’ voldoende om te zien hoe lovend de grote spelers en analisten bureaus zijn over Haley’s Business Rules Platform. Haley Business Rules Engine is gebaseerd op een verbeterde versie van het zogenaamde ‘Rete Algorithm’ waarmee de meest geavanceerde business logica kan worden vastgelegd en uitgevoerd (ik kom hier graag in een toekomstige Optimize op terug). Maar het product waar het bij EDA natuurlijk allemaal om draait is de Complex Event Processor. Hier valt echter zoveel van te vertellen, dat dit een compleet artikel rechtvaardigt. In de volgende Optimize ga ik dat met genoegen doen. Om alvast een sneak preview te geven zijn in afbeelding 5 en 6 screenshots weergegeven van respectievelijk het ontwikkeltool en de beheermonitor van de Complex Event Processor.

Afb. 5: Development voor Complex Event Processing in Eclipse.

Afb. 6: Beheer voor Complex Event Processing in de Visualizer.
Toekomst
Met de eerder genoemde voorbeelden heb ik getracht enig gevoel op te roepen van de uiteenlopende aard van de toepassingen van EDA. Dat zijn echter de voorbeelden die we nu al om ons heen kunnen zien. Wat dit betreft is er in de nabije toekomst nog een grote verschuiving te verwachten. De term die in dit kader door futuristen steeds vaker gebezigd wordt is Ubiquitous Computing, vrij vertaald: alomaanwezige computerkracht, verbonden met alles en embedded in alles. Op YouTube is nog een klein stukje (4 min. 17) terug te vinden4 uit een geweldige documentaire van een paar jaar geleden waarin dit fenomeen wordt toegelicht. Als we zien in welk tempo technologie in het dagelijks leven oprukt, geloof ik persoonlijk dat met deze voorspellingen volledig raak wordt geschoten. En al loopt het iets minder vaart, feit blijft dat steeds meer zaken worden gemeten en digitaal beschikbaar zijn. Sporters die gebruikmaken van een vinding van het Nederlandse bedrijf ‘De Champion Chip’ kunnen anno 2009 de thuisblijvers al via internet van minuut tot minuut zicht laten houden op de plaats waar ze zich op dat moment bevinden5. Elke deelnemer draagt een sport-GPS en pusht events over de actuele positie.
Of, relevant voor elke Nederlander: inmiddels staat vrijwel het gehele Nederlandse rijkswegennet onder cameratoezicht en kunnen we technisch prima op basis van kenteken-herkenning events genereren wie zich waar in Nederland bevindt. En is het niet d.m.v. cameraherkenning, dan is het wel op basis van het aangemeld zijn aan een mobiel telefoonnetwerk.
Ik ben niet onverdeeld blij met een aantal ontwikkelingen in dat kader, maar gelukkig hebben we in Nederland sinds 2001 de Wet Bescherming Persoonsgegevens, waarbij op naleving toezicht wordt gehouden door het College Bescherming Persoonsgegevens. Maar mijn punt is denk ik helder. EDA is niet een randverschijnsel in uithoeken van de ICT. EDA is de architectuur die de basis vormt voor een geheel nieuwe vorm van automatisering. En de manier waarop we dat het eerst zullen merken is dat reguliere bedrijven meer en meer mogelijkheden zullen zien om EDA toe te passen in hun bedrijfsprocessen. Zodat Gartner gelijk krijgt met z’n marktvoorspellingen destijds in 2002: The Real Time Enterprise.
Referenties
1) Real Time Enterprise, Gartners introductie van dit onderwerp medio 2002:
http://www.gartner.com/pages/story.php.id.2632.s.8.jsp
2) Informatieve Powerpoint presentatie met de nodige uitleg en achtergronden van RFID:
http://www.cs.unc.edu/~pozefsky/COMP380_S08/RFID_Presentation%5B1%5D.ppt
3) Overname door Oracle van Haley, eind oktober 2008:
http://www.oracle.com/haley/index.html
4) Ubiquitous Computing, snippet op YouTube uit de BBC documentaire ‘New Visions of the Future’ met Dr. Michio Kaku:
http://www.youtube.com/watch?v=3TY4z7JylZA
5) Real Time Tracking van sporters met demo van tracking bij Ronde van Texel:
http://www.championchip.nl/ccnederland/
http://www.sport-track.com/
http://spectator.sport-track.com/7961
Download Publicatie (PDF)
Kijk voor alle publicaties op http://www.anewlink.nl/ict/nl/publicaties/
(c) juni 2009, A New Link bv, www.anewlink.nl.
Meer weten?
Wilt u meer weten over
onze diensten? U kunt altijd vrijblijvend contact met ons op nemen via
+31 (0)316 26 90 96 of stuur een email naar info@anewlink.nl
+31 (0)316 26 90 96 of stuur een email naar info@anewlink.nl