Hoe Betrouwbaar is Betrouwbaar?

De standaarden van de OverheidsServicebus zijn gebaseerd op het Internationaal breed geaccepteerde WS-I Basic Profile 1.1, en daarmee op SOAP 1.1 en WSDL 1.1, samen met WS-Addressing (het WUS Best Effort profile). Althans, dat geldt voor Services van het type Raadplegingen. Voor Services van het type Meldingen werd het WUS profiel niet ‘Betrouwbaar’ genoeg geacht. De OverheidsServicebus beveelt voor Meldingen het gebruik van ebMS aan (het ebMS Reliable profiel). Maar wat is er dan zo ‘Betrouwbaar’ aan ebMS?

De ‘Betrouwbaarheid’ van het ebMS Reliable Profiel zit hem in de opties @ackRequested, DuplicateElimination, Retries en RetryInterval. Deze opties kunnen ingevuld worden in de CPA, het contract tussen de betrokken Partijen. Implementaties van ebMS zullen deze waardes moeten begrijpen. De zendende partij zal het Bericht opnieuw verzenden zolang hij niet de bijbehorende Acknowledgement heeft ontvangen. De waarden van Retries en RetryInterval bepalen hoe vaak en hoe snel. De ontvangende Partij zal dubbel ontvangen Berichten (te herkennen aan het MessageID) slechts éénmaal verwerken, maar wel steeds een Acknowledgement terugsturen.

De Open Source implementatie Hermes / H2O van ebMS kan trouwens niet met CPA’s overweg. Kun je in H2O dan ergens anders die Reliability eigenschappen configureren???

In een WSDL bestaat er binnen het WUS profiel niet de mogelijk om dergelijke waarden te configureren. Wel heeft ieder OSB WUS compliant bericht een MessageID vanwege WS-Addressing. In de WSDL van een webservice kun je specificeren dat er voor ieder Bericht een Acknowledgement terug gestuurd dient te worden. Je kunt de OSB WUS compliant Implementatie van de Verzendende partij zo inrichten dat ie Herhaalpogingen doet. En je kunt zorgen dat het aantal Herhaalpogingen en de frequentie ervan configureerbaar is. Bij de andere partij kan de Implementatie zo ingericht worden dat eventuele dubbel ontvangen Berichten (te herkennen aan het MessageID) er uitgefilterd worden. Dat kan allemaal binnen het OSB WUS profiel. Daar hoeven helemaal niet zelfbedachte SOAP Headers voor meegeleverd te worden. Dus ook het OSB WUS Profiel kan best op een Reliable manier gebruikt worden.

Alleen zijn er extra ontwikkel-inspanningen nodig om de WUS implementaties zo in te richten. Bijvoorbeeld Axis2 kan niet zomaar uit zichzelf herverzenden en ontdubbelen. Van andere SOAP toolkits weet ik dat niet, maar het is het wel waard het te onderzoeken, voor bijvoorbeeld Sun’s Metro, Apache CXF, Microsoft .Net. Deze extra ontwikkel-inspanningen zijn echter nog wel te overzien. En binnen de OverheidsServicebus community zouden Reliable oplossingen op basis van genoemde SOAP Toolkits natuurlijk met elkaar gedeeld kunnen worden.

Als de OverheidsServicebus handreikingen a la bovengestelde zou gaan ondersteunen, dan zou er naast het ebMS Reliable profiel een net zo Reliable WUS profiel neergezet kunnen worden. Daarmee wordt voorkomen dat WUS partijen die met WUS partijen Melding-achtige Berichten gaan uitwisselen zich door de OverheidsServicebus in de kou gezet voelen. En aangezien het overgrote deel van de partijen gebruik maakt van WUS voor de inrichting van hun Service-georienteerde Architectuur, heeft de OverheidsServicebus daar een belangrijke taak.

In de WS-* standaarden wereld is er wel ook nog de WS-ReliableMessaging 1.1 Recommendation. Die is inmiddels ook breed geaccepteerd en in allerlei toolkits, waaronder bovengenoemde, geïmplementeerd. WS-ReliableMessaging gaat verder en is zelfs nog ‘Betrouwbaarder’ dan het Reliable ebMS profiel. WS-ReliableMessaging gebruikt namelijk speciale Reliability berichten zoals een Aankondiging dat er iets aan gaat komen, Bevestigingen dat er Berichten ontvangen zijn, en een Afsluiting ten teken dat het allemaal klaar is. En dat allemaal om de te versturen Melding-berichten heen.

Bij gebruik van deze vorm van Reliability is de ontwikkel-inspanning weer gering, net zo als bij het gewone WUS Best Effort profiel, omdat de Toolkits er faciliteiten voor hebben. Mate van Standaardisatie en Acceptatie is Hoog, en mate van Betrouwbaarheid is ook Hoog, hoger dan die van ebMS. Het ligt voor de hand dat de OverheidsServicebus ook deze vorm van Reliable Berichtenverkeer gaat ondersteunen.

Samengevat: de Betrouwbaarheid van de verschillende profielen tegen elkaar afgezet:

Betrouwbaarheid OSB profielen

XMLSchema validation probleem

Op mijn werk hebben wij nogal een berg XMLSchema bouwstenen waarmee we de verschillende interfaces van de webservices beschrijven. De meest basale bouwsteentjes zitten met z’n allen in een zogenaamd Basisschema, met als namespace http://www.suwi.nl/SuwiML/Basis-v0400. Iets minder basale bouwstenen, bijvoorbeeld een bouwsteen ten behoeve van beschrijving van Fouten (en Waarschuwingen en Info-meldingen), hebben een aparte XMLSchema beschrijving, met een aparte namespace http://bkwi.nl/SuwiML/FWI/v0102. Het is goed om voor dat soort dingen aparte bouwstenen te hebben, omdat die brokken herbruikbaar te importeren zijn in de XMLSchema beschrijvingen van de verschillende diensten. Die minder basale bouwstenen maken gebruik, door middel van imports, van de basale bouwstenen. Dan zijn er de overkoepelende XMLSchema’s die een Request of een Response van een bepaalde webservice beschrijven. Zo’n overkoepelend XMLSchema doet imports van basale bouwstenen en van minder basale bouwstenen. En die minder basale bouwstenen importeren dus weer sommige basale bouwstenen. Het gevolg is dat de namespace van de basale bouwstenen uit het Basisschema eigenlijk via twee wegen door een overkoepelend XMLSchema geïmporteerd worden: direct, rechtstreeks vanuit het overkoepelende XMLSchema, en indirect, via de minder basale bouwstenen. En daar gaat het mis. Het blijkt dat een gangbare parser als Xerces nogal rigide omgaat met dit soort geneste imports. Zodra Xerces eenmaal voor een bepaalde namespace een XMLSchema file geïmporteerd heeft, dan gaat ie niet meer voor dezelfde namespace nog eens een andere XMLSchema file importeren. Ook al geef je dat expliciet aan in import statements. Hij weigert het gewoon! Zodoende ontstaan er onaangename validatie-fouten. Snappie?

XMLSchema

Het enige dat er op zit denk ik is in de minder basale bouwstenen de import statements uit te zetten. En te zorgen dat in het overkoepelende schema er meteen voldoende geïmporteerd wordt. Nadeel daarvan is dat de gebruikte minder basale bouwstenen op zich zelf dan niet meer valide zijn. Maar ja dat moet dan maar.

Helaas begint Xerces dan te klagen, bij het valideren van het overkoepelende XMLSchema, dat die tussenliggende bouwsteen niet valide is! Ja Xerces wat wil je nou? Ik zit dus in een deadlock…

Dus de imports in de minder basale bouwstenen weer aan gezet. In het overkoepelende schema heb ik daarnaast nu de volgorde veranderd. Dat samen lijkt te helpen. Voor deze dienst heb ik nu tenminste een XMLSchema dat ook voor Xerces door de beugel kan.

Acknowledging WSDL

Ik ben voor mijn werk een beginnetje aan het maken om een nieuwe versie van de Suwi Transactiestandaard te maken. Daarbij kwam ik een oude mail van collega PV tegen, dat oa over Acknowledgments bij de SuwiML Meldingen gaat. Naar aanleiding van wat PV daar schrijft, moet ik toegeven dat ik waarschijnlijk het beoogde gebruik van Acknowledgments tot nu toe niet helemaal goed geinterpreteerd had, ook niet ten tijde van een discussie die ik een jaar geleden of zo nog met een aantal betrokkenen gevoerd had.

Maar ik denk ook dat mijn verkeerde begrip voortkwam uit de manier waarop die Acknowledgments in de XML Schema’s beschreven waren. En ook dat mijn verkeerde interpretatie voorkomen zou zijn geweest als de koppelvlakken van die Meldingen beschreven zouden zijn met WSDL. Dat besef vind ik grappig omdat ik juist dezer dagen bezig ben om collega’s te overtuigen van het nut en de noodzaak van het gebruik van WSDL bij alle webservices in onze keten. Die collega’s zijn nogal afhoudend en kritisch bij dat soort nieuwlichterij en ik moet alle zeilen bijzetten om ze mee te krijgen. Dus ik kan dit soort voorbeelden als mijn verkeerde interpretatie van die Acknowledgments best gebruiken bij de discussie over WSDL.

Maar wat ik nou juist weer niet wil is die hele discussie over de Acknowledgements weer oprakelen…

Loopbaan tot dusver…

 Alle open dagen van universiteiten en hogescholen had ik afgelopen. Ik vond allerlei studies wel min of meer interessant. Maar er was er toch niet een die er bovenuit sprong. Dus besloot ik maar Wiskunde te gaan studeren, want ‘met Wiskunde kun je later toch nog alle kanten op’. Dat was in 1984. Het viel niet altijd mee. Ik vond het bij de meeste vakken steeds weer een hele strijd om door te dringen in de stof en om te doorgronden waar het allemaal heen moest leiden. Gelukkig kwam er dan wel altijd een vervolgvak waarin ik met meer overzicht beter begreep waar het inleidende vak nou helemaal over ging. Later bleek dat de Analysevakken mij wel aardig lagen, en uiteindelijk studeerde ik af in 1990 bij Korevaar en Wiegerinck in de Complexe Functies.

Ik had de smaak te pakken en wilde verder met de wiskunde, ik was net lekker op gang. Op de Wiskundefaculteit van de VU was er de mogelijkheid mijn vervangende dienstplicht te vullen met het begeleiden van werkcolleges. Die dienstplicht ging min of meer naadloos over in een AiO-schap bij de Analyse-groep van Prof.
Kaashoek aan de VU. Daar had ik een goede tijd, ik zat in een erg actieve groep met veel buitenlandse contacten, ik werd goed begeleid, er waren congressen ver weg, en mijn onderzoek verliep ook nog voorspoedig. Eind 1996 was ik klaar.

Inmiddels was ik zo gespecialiseerd geraakt in een zo theoretische richting dat alleen een verdere universitaire carriere voor de hand lag. Maar de universitaire banenmarkt zat op dat moment potdicht, in ieder geval in Nederland. In die tijd was wel net de hele automatiseringsgolf op gang gekomen, en na 12 jaar wiskunde wilde ik ook wel weer eens iets verder om mij heen kijken. Maar als ik dan toch met computers ging werken wilde ik ook eerst wel echt verstand van computers krijgen. Dus, halverwege 1997, liet ik mij omscholen tot systeembeheerder, bij een detacheringsbedrijf. Die omscholing leek nergens op, ik werd gewoon lekker in het diepe gegooid. Mijn eerste ‘klus’ was bij de helpdesk van dat bedrijf zelf. Ik had een moeizame start, ik wist van toeten noch blazen op automatiseringsgebied, en ik vond het bij dat bedrijf ook niet erg leuk.

Na een paar maanden werd ik geplaatst bij Hooge Huys in Alkmaar, de verzekeringsmaatschappij. Daar ging het een stuk beter. Ik maakte kennis met allerlei systemen en programma’s en technieken, oude en nieuwe, goede en slechte. Zodra het concurrentiebeding het toeliet stapte ik over van het detacheringsbedrijf naar Hooge Huys zelf. In een groot kantoorautomatiseringproject kon ik een aardige rol spelen bij het ontwerpen en implementeren van een standaard PC inrichting voor pakweg 1500 PC’s. Na zo’n drie jaar beheer stapte ik in 2001 intern over naar een programmeerafdeling en daar zit ik nu nog. Het is de afdeling-van-de-toekomst van het bedrijf, we werken volgens de Object Oriented en Component Based methodieken, alleen heeft men destijds helaas voor die afdeling-van-de-toekomst wel voor een taal (Forté) gekozen die inmiddels de concurrentieslag met Java ruimschoots verloren heeft. Met dat Forté maken we een formulieren-inrichtings-syteem waarmee andere (verzekerings-)afdelingen zelf al hun electronische formulieren kunnen maken, compleet met automatische verwerking, ter vervanging van de traditionele papieren formulieren. Maar zelf ben ik de laatste tijd alleen maar bezig met het ontwerpen en maken van een soort toegangspoort die het mogelijk maakt voor onze interne systemen om via het Internet gegevens op te halen bij instanties als RDW voor kentekens en FISH voor fraudeinformatie. En andersom kunnen andere instanties via die poort bij ons bijvoorbeeld premieberekeningen opvragen, schades aanmelden of offertes aanvragen. En dat alles snel en veilig en ‘real-time’. Die poort maken we wel in Java gelukkig.

Zo theoretisch en abstract als ik toen bezig was met de wiskunde, zo praktisch en concreet is mijn werk nu. En zo rustig en grondig als ik mijn onderzoek kon doen in mijn AiO tijd, zo snel en hectisch is het vaak nu. Beide situaties hebben hun goede kanten vind ik. Overeenkomsten zijn er ook. Ten eerste steekt alles natuurlijk logisch in elkaar. Zo niet dan werkt je programma gewoon niet en zie je het voor je ogen fout gaan. Vroeger als ik een fout bewijs van een Stelling produceerde was het veel moeilijker daar achter te komen. Het werken aan de grotere en meer complexe computerprogramma’s vind ik tot nu toe ook net zo uitdagend als destijds het wiskunde onderzoek. En ook het omzeilen of voorkomen van alle zaken die mis (kunnen) gaan en het oplossen van alle problemen die opdoemen vind ik heel vergelijkbaar met destijds het volledig proberen te doorgronden van een wiskundig model of theorie.

En vind ik het nu leuker dan toen? Ja eerlijk gezegd wel. In ieder geval is het best prettig om te zien dat er ook echt iets gebeurt met de spullen die ik aflever, dat er echt mee gewerkt wordt en dat anderen er baat bij hebben. Ik vind het ook wel een enerverende tijd, in een paar decennia is er door die automatisering toch een hoop veranderd, en de komende tijd zullen er ook weer nieuwe technieken of betere versies daarvan bijkomen. Ik vind het erg leuk om dat van dichtbij mee te maken en er zelfs een beetje aan mee te werken. Wat ik nu minder leuk vind is dat ik niet altijd de mogelijkheid heb (vanwege tijd of budget) om de best mogelijke oplossing te bereiken, en om een programma zo efficient en elegant mogelijk te maken. En ook is het altijd vervelend als er managers gaan zeuren of zelfs in paniek raken als ik eens een deadline niet haal. Dat gebeurt nog wel eens…

Maar dat betekent niet dat ik spijt heb van mijn wiskundetijd hoor! Ik vond dat ook een heel inspirerende en uitdagende tijd. Ik heb heel goede herinneringen aan de wetenschap en ben blij dat ik het allemaal meegemaakt heb: het onderzoek, het publiceren, de congressen, de lezingen die ik daar gaf, en niet te vergeten de internationale contacten en het samenwerken met al die mensen. Maar toen kwam daar dus het moment dat bleek: ‘met Wiskunde kun je later toch nog alle kanten op’.

In de soep

Het liep helemaal in de soep. Van mijn hele voorbereiding kwam niets terecht. ben vertelde me aan het begin van de les dat hij een zootje huiswerk nog niet nagekeken had. Hij zei me dat de bedoeling was dat ik in iedere geval alle antwoorden gaf, om ze te laten nakijken. Maar wat deed ik dus: ik ging ook alle antwoorden nog even uitleggen en steeds peilen of iedereen dat snapte.

En daar ben ik dus de hele les mee bezig geweest. Dat was voor mij maar ook voor hun veel te inspannend. Zij moesten ook het hele uur dus opletten. Volgende keer schrijf ik gewoon alle antwoorden op het bord, en loop dan rond terwijl zij het nakijken. Zo zijn zij actiever en kan ik veel beter peilen waar de problemen liggen, en ook beter zien wie het wel en wie het niet kan.

We zaten ook in een ander lokaal als gewoonlijk, dit was een natuurkunde lokaal met zo’n grote vaste tafel vooraan. Vervelend want als ik dan bij het bord vandaan wilde de klas in zat die tafel in de weg. En omdat ik veel schreef, ben ik dus het hele uur bij die tafel gebleven en kon ik het rumoer niet zo goed in de hand houden.

Ik wilde ook dat ze begrépen dat (4*x)/(5*x) = 4/5 en dat 4/(5*x) ? 4/5 maar die abstracte variabele leverde wel erg veel problemen op bij sommigen. Moet je op een gegeven moment genoegen nemen met een truc of moet je blijven streven naar echt begrip?

Op de eerste bank zaten 4 jongens, op de tweede 4 meisjes, die waren het moeilijkst in bedwang te houden. Ik deins er erg voor terug om iemand apart te zetten, maar ik wil dat een keer toch doen, om te zien wat voor effect dat heeft op de les en op mijzelf.

Leuk is wel dat ze allemaal, op 1 of 2 of misschien ook wel 4 na, bereid zijn om fanatiek mee te doen. Ze roepen en schreeuwen antwoorden door de klas en zijn teleurgesteld als ze geen beurt krijgen. Aan de ene kant moet ik hun enthousiasme een beetje intomen, althans het wanordelijke geroep, maar dan moet ik toch ook bevrediging uit zo’n klas kunnen putten.

Bij deze les had ik van tevoren helemaal geen zin, ik was moe, chagrijnig, en daarom ook wel een beetje gespannen. Dat was niet de ideale gesteldheid, maar dat heb je natuurlijk niet zo in de hand, maar je kunt dan wel zorgen, als het goed is, dat de les een beetje rustig en zonder veel inspanning van mij verloopt.

De eerste les

Dit was dus de eerste les in mijn leventje die ik gaf. Voor een 4 vwo klas. En het ging heel goed. Eerst ging ik me voorstellen, toen ging ik bij iedereen persoonlijk het huiswerk even snel kijken of ie het had. Dit eigenlijk meer omdat Ben dat gewoonlijk deed in deze beetje moeilijke klas, dan omdat ik dat zelf bedacht had. Het beleek dat weinig de 27C hadden, dus ik ging hem maar even snel uitleggen. Dit had ik niet eens zo goed voorbereid maar ik wist toch goed de functie in 27C uit te leggen, vond ik zelf. Toen ging ik dus vertellen wat ik voorbereid had, zei er nog even snel bij dat ze dit bij hun aantekeningen moesten opnemen, op dat idee waren ze anders zelf niet gekomen. J. vroeg nog of die functie (1/2)x verticaal werd links.

Twee leerlingen zeiden dat ze mijn les positief evalueerden, ik legde het wel duidelijk uit vond ie. Het ging dus lekker. Het grote voordeel was volgens mij wel dat ik niet echt heel nieuwe dingen hoefde te vertellen, het was meer herhaling eigenlijk.

Het is wel al duidelijk dat één leerling moeilijk aan het werk te krijgen is. Maar verder valt de ongemotiveerdheid me overal ontzettend mee.

Wat voor Wiskunde?

Als mensen mij vragen met wat voor Wiskunde ik nou bezig ben, moet ik eerst inschatten of vragen hoeveel ze al weten. Aan de hand daarvan ga ik dan iets vertellen. Regelmatig schat ik het verkeerd in en wordt het weer veel te moeilijk.

Leren reflecteren

Vandaag overweldigd door de berg stencils die uitgedeeld werd. Moest ook erg wennen aan het idee dat ik moest gaan leren hoe ik moet gaan leren, helemaal volgens een indrukwekkende ‘methode’. Ik had zo het idee, ga maar naar die leerling toe en probeer het gewoon maar. Tijdens dat uur en in de de nabesprekingen leer je dan automatisch wel hoe jij als leraar bent. Ik voel me met dat ‘leren reflecteren’ erg gebonden, dat dat nu dé methode is die wij gaan gebruiken. Nu moet ik mijn denken opeens in een schema inpassen.

Didactiek

Ik heb niet echt grote plannen om leraar te worden. Het is hooguit een van de opties op mijn toekomstige carrière. Om de mogelijkheid toch maar open te houden wil ik dit semester toch maar het 1ste fase stuk Didactiek volgen. In het verleden ben ik met kinderen bezig geweest als voetballeider en als begeleider van een vakantie-uitwisseling. Dat was erg leuk. Kinderen zijn intrigerende mensjes. Ik had ze onder de duim, kon wat van ze gedaan krijgen en daarbij konden ze mij ook nog wel waarderen meen ik. In dat kader lijkt het mij leuk om eens voor de klas mijn krachten met ze te meten. Maar niet jaar in jaar uit voorlopig.

Het vak Didactiek is een goede gelegenheid om het eens mee te maken. Het grote nadeel van het leraarschap is dat ik niet al mijn kennis en kunde van zes jaar in de sloot wil gooien. Ik wil in principe mijn kennis op peil houden en verversen en nog verder in de Wiskunde proberen door te dringen. Dat is ook wat mij in mijn studie drijft: ik wil weten hoe het zit. En ik vrees dat dat niet te combineren is met het leraarschap. De lagere verdienste speelt geen rol. En veel vrije vrije tijd en de mogelijkheid mijn tijd zelf enigszins in te delen vind ik wel aantrekkelijk.

Ik denk dat het gunstig is dat ik als leraar een rustige indruk zal maken, terwijl ik toch ook enthousiast kan zijn over dingen die ik leuk vind. Ik ben niet echt een lolbroek in de zin dat ik niet zal lachen om grapjes die ik niet leuk vind, en wat dat betreft niet met me zal laten sollen. Ik zal ook geen woede-uitbarstingen hebben, maar ik geloof wel dat ik het zal kunnen overbrengen als iets me niet zint.

Ik zal ongetwijfeld nog moeten leren hoe ik een leerling op zijn niveau moet helpen en hoe ik een klas met 30 kinderen in de gaten hou. Maar dat zie ik wel zitten.

Wiskundeboek

Ze proberen het Wiskundeboek erg op te fleuren, met tekeningetjes en verhaaltjessommen. Ze doen er alles aan om het maar niet saai te laten zijn, het kenmerk van de boeken van vroeger.Dat was een opeenvolging van definities en sommen. Het effect moet volgens mij niet overschat worden. Kinderen bij wie het logische inzicht ontbreekt zullen niet plotseling het licht zien. Opvallend is ook de rol van meisjes in de verhaaltjessommen. Als er in het verhaaltje gekibbeld wordt tussen een jongen en een meisje, zal het meisje steeds het goede antwoord geven.

Deze veranderingen zijn er gekomen doordat Wiskunde en andere exacte vakken zo’n groot belang wordt toegedicht. Voor vervolgopleidingen, banen, en voor algemeen persoonlijk en nationaal heil. Hoge cijfers voor Wiskunde kunnen het gemakkelijkst omgezet worden in harde centen, en zijn dus het meest gewenst. En in het kader van de emancipatie worden meisjes opvallend voorgetrokken.