Domino-nieuwsbrief e-office webservices maken met ND7
      
welkom     nieuws 2008     nieuws 2007     nieuws 2006     nieuws 2005     Lotus Notes Domino     e-office

webservices maken met ND7
Lotus Notes Domino 7 (ND7) biedt de mogelijkheid om relatief eenvoudig webservices te ontwikkelen. De Domino-designer van ND7 bevat hiervoor een apart design element. In dit item leest u meer over dit nieuwe design element en laten wij u zien hoe u een webservices ontwikkelt. Als voorbeeld ontwikkelen we een webservice die het mobiele telefoonnummer van een e-office-medewerker opzoekt in een Notes-database. Een flashfilmpje toont de besproken handelingen.

Via een webservice is het mogelijk om op afstand specifieke functies aan te roepen door bepaalde berichten te versturen over het internet. De aanbieder van de webservice publiceert de aan te roepen functies door middel van een (WSDL Web Service Description Language) bestand. Dit bestand is in XML geschreven en beschrijft alle functies en hun parameters. De webservice client stelt aan de hand van het WSDL-bericht een juiste aanroep samen, in een zogenaamd SOAP (Simple Object Access Protocol) Request-bericht, en stuurt dit bericht naar de webservice. De gewenste functie wordt door de webservice uitgevoerd en het resultaat wordt naar de webservice client teruggestuurd in de vorm van een SOAP Response-bericht.

Binnen Lotus Domino worden webservices geschreven in een design element dat veel gelijkenis vertoont met een agent. De taal die kan worden gebruikt is LotusScript of Java. Voorwaarde voor het schrijven van een webservice is dat de code geschreven wordt in classes.

De webservice is via HTTP te bereiken door middel van specifieke URL's:

  • ?OpenWebService triggert de webservice tot het uitvoeren van de SOAP Request
  • ?WSDL geeft het WSDL-bestand terug
In dit artikel gaan we een webervice maken die uit een Notes-database het mobiele telefoonnummer haalt van een e-office-medewerker. Het artikel bevat bovendien een flash filmpje om de verschillende stappen te verduidelijken.

Lotus Domino is niet geschikt als webservice client dus voor het clientgedeelte maken we gebruik van een HTML-component van Microsoft: de webservice.htc. Informatie uit de MSDN Library vindt u hier.

de Notes-database
De database waar we onze gegevens uit gaan halen, is een interne database van e-office. Deze database bevat gegevens van medewerkers van e-office, waaronder het mobile telefoonnummer. Het uiteindelijke doel van de webervice is het mobiele telefoonnummer van een medewerker te vinden aan de hand van een deel van de achternaam.

de webservice
Bij het openen van de database in de Domino-designer zien we een een mogelijkheid om een webservice aan te maken.

    Bij het aanmaken van een nieuwe webservice moeten we de naam opgeven van de webservice. Dit is ook de naam waarmee we in een later stadium het WSDL-bestand van de server kunnen ophalen.
In de 'Declaration' sectie van de webservice kunnen we nu de code gaan schijven die het hart vormt van de webservice.

Na het schrijven van de code moeten we nog een aantal eigenschappen van de webservice invoeren voordat we hem kunnen bewaren. De belangrijkste eigenschap is de 'PortType Class'. Dit is de naam van de class die we net geschreven hebben.

Nu zijn we klaar met het schrijven van onze webservice. We kunnen nog even kijken hoe de WSDL eruit komt te zien met behulp van de knop 'Show WSDL'.

de webservice client
Zoals gezegd maken we gebruik van de HTML-component 'webservice.htc' van Microsoft voor het implementeren van de webservice in een client. Deze HTML-component implementeren we als een 'behavior' aan de 'body' tag van een HTML-document. Deze manier van werken is specifiek voor Internet Explorer 5.5 of hoger. De HTML schrijven we op een Notes form waarvan we aangegeven hebben dat het contenttype HTML is.

Om de webservice behavior te kunnen besturen, moeten we een aantal Javascript-functies in het HTML-document toevoegen. Voor een uitleg, zie:
http://msdn.microsoft.com/workshop/author/webservice/using.asp.

Het flash filmpje bij dit artikel laat duidelijk zien hoe de HTML voor het form kan worden opgebouwd.

De webservice client van Microsoft is niet 100% compatible met de webservices van Lotus Domino. Dit geldt niet alleen voor Lotus Domino, maar bijvoorbeeld ook voor Axis Web Services. Reden hiervoor is dat de webservice client verwacht dat er in het WSDL-bestand tags staan die beginnen, met 'soap:'. De webservice van Lotus Domino produceert echter tags met de naam 'wsdlsoap:'. Om dit te verhelpen, moet het webservice.htc bestand worden geopend met een text editor. Vervolgens moeten alle instanties van 'soap:' vervangen worden door 'wsdlsoap:'.

testen & klaar
We zijn op het punt aangekomen dat we onze webservice kunnen gaan testen. We moeten het Notes-formulier met de HTML openen in Internet Explorer 5.5 of hoger. Dit doen we met de URL-parameter '?ReadForm'.

In het invoerveld kunnen we nu de naam van een e-office medewerker invoeren. Na het klikken op de knop zal de webservice client aan de webservice vragen of er een mobiel telefoonnummer gevonden kon worden en het resultaat van de functie zal in een prompt op het scherm verschijnen.