Domino-nieuwsbrief e-office XMLHTTPRequest
      
welkom     nieuws 2008     nieuws 2007     nieuws 2006     nieuws 2005     Lotus Notes Domino     e-office

XMLHTTPRequest
Lotus Notes Domino biedt standaard vele mogelijkheden voor het samenstellen van overzichten van bepaalde informatie, 'views' genaamd. Soms moet een view echter informatie bevatten, die in een standaardview niet kan worden getoond. Door gebruik te maken van een XMLHTTPrequest Object in JavaScript, kan dit worden opgelost.

de business case
Een klant van e-office, een bank, maakt al enige jaren gebruik van een CRM-applicatie, door e-office ontwikkeld in Lotus Notes Domino. In de afgelopen jaren is de applicatie meegegroeid met de organisatie, en is deze uitgebreid van 1 naar 23 databases. Tijdens het gebruik van de applicatie kwamen bovendien enkele aanvullende functionele wensen naar voren. Een van die wensen was om de uitstaande acties per contactpersoon (client, intermediair, etc.) in een kalenderoverzicht weer te geven. In principe zou dat in Lotus Notes redelijk eenvoudig op te lossen zijn door een Calendar view te gebruiken. Het probleem is echter dat zo'n view niet kan worden gecategoriseerd, en dus geen acties per klant kan tonen.

de oplossing
Dit probleem is opgelost door gebruik te maken van het XMLHTTPRequest Oject in Javascript. Met behulp van dit object kunt u een POST of GET request naar de server versturen, zonder dat u een pagina hoeft te herladen. Het object stuurt een request naar de Domino-server en haalt een Notes-view op. Door gebruik te maken van ?ReadViewEntries kunt u zo XML terug krijgen. Bij dit commando kunt u met StartKey= en UntilKey= in de URL een begin- en eindwaarde opgeven (vergelijkbaar met een dblookup). Door de eerste kolom zo op te maken dat deze een datum en een sleutelwaarde bevat, kunt u zo de selectie maken die nodig is.

De view is dan als volgt opgezet:
Kolom 1: Sleutelwaarde + "~~" + ISO datum (bijv. 10004056~~20041006)
Kolom 2: Dag van de maand (bijv. 6)
Kolom 3: Omschrijving (bijv. Afspraak bij de client)

Stel dat u dan de volgende URL opvraagt:
/vwCalendar?ReadViewEntries&StartKey=10004056~~20041004&UntilKey=10004056~~20041011

Dan levert dat bijvoorbeeld de volgende XML op:


De XML die u terug krijgt, is te parsen met een Javascript XML parser naar een eenvoudige array, met de dag als index en een stukje HTML als waarde. Voor het bovenstaande stukje XML ziet dat er dan als volgt uit:

Vervolgens is er een stuk Javascript geschreven dat een tabel opbouwt die er uitziet als een maandkalender.

Met behulp van wat CSS kunt u de kalender dan verder opmaken, zodat het aansluit bij het design. Door twee dropdown-velden toe te voegen, kunt u dan een maand en jaar selecteren om weer te geven.