Domino-nieuwsbrief e-office Domino XML met Lotusscript
      
welkom     nieuws 2008     nieuws 2007     nieuws 2006     nieuws 2005     Lotus Notes Domino     e-office

Domino XML met Lotusscript
Domino XML (DXL) wil zeggen dat Domino-data weergegeven wordt volgens de tagdefinities in de Domino Document Type Definition (Domino DTD). DXL is een representatie van Domino-data in XML- formaat en maakt het mogelijk om Domino-applicatiedata in andere applicaties te tonen. DXL is geïntroduceerd in Lotus Domino 6 en maakt sindsdien standaard deel uit van Lotus Domino.

DXL maakt het mogelijk om alle data en design-elementen als XML weer te geven en te behandelen. Dit biedt de mogelijkheid om een aantal interessante dingen te doen. Met Domino XML kan bijvoorbeeld data worden beheerd, die voorheen moeilijk te integreren was. Bovendien kan Domino-data buiten Notes geplaatst worden waardoor ook met andere tools dan Domino Designer gewerkt kan worden.

algemene functionaliteit van DXL:

  • XML-data importeren van externe databases naar Domino-databases
  • XML-data exporteren van Domino-databases naar andere applicaties of databases
  • data in een Domino-database wijzigen door DXL te exporteren, wijzigingen te doen en dan opnieuw te importeren in Domino
  • Domino-data gebruiken voor het verwerken in een externe XML tool (als eindpunt, of als tussenstation voordat deze opnieuw geïmporteerd kan worden in Domino), of DXL data direct in een Third-party tool maken
  • Design-elementen kunnen worden geïmporteerd in REPLACE_ELSE_CREATE modus of CREATE modus. In het geval van de eerste wordt het design dat geïmporteerd wordt geactualiseerd indien deze al bestaat of is gewijzigd. In het tweede geval wordt er altijd een nieuw design-element gemaakt.
In script maak je een notesNoteCollection aan; een verzameling van 'notes' die aan een selectiecriterium voldoen. Je kunt bijvoorbeeld alle agents, alle outlines, alle design-elementen, of alleen data selecteren. De notesNoteCollection kan verschillende typen 'notes' door elkaar bevatten: het kan zelfs een complete database zijn.
Het maken van een notecollection is simpel. Eerst een collectie instantiëren: Set Nc = dbThis.createNoteCollection( False ) . De False vlag geeft hier aan dat standaard geen notes geselecteerd worden. Om alleen de forms te exporteren, is de regel als volgt: nc.selectForms = True. Op dezelfde manier kun je allerhande andere soorten notes toevoegen aan de collectie.
Nadat alle gewenste notes geselecteerd zijn moet de collectie opgebouwd worden. Daar zorgt de BuildCollection-methode voor: Call nc.BuildCollection.

Met behulp van een stream en een dxlExporter object kan de notecollection geëxporteerd worden naar het filesysteem.

DXL ziet er zo uit:

<table widthtype='fixedleft' refwidth='6.4965in'><tablecolumn width='1.3618in'/><tablecolumn
width='5.1347in'/>
<tablerow>
<tablecell>
<pardef id='2' keepwithnext='true' keeptogether='true'/>
<par def='2'>voornaam</par></tablecell>
<tablecell>
<pardef id='3' keepwithnext='true' keeptogether='true'/>
<par def='3'><field type='text' kind='editable' name='voornaam'><code event='defaultvalue'><formula
>@Name([CN];@UserName)</formula></code></field></par></tablecell></tablerow>

Hierin is de tabel die op het formulier staat, het typeveld, de veldnaam en ook de formule die in het veld staat zichtbaar.
Dit is allemaal aan te passen door middel van zoek en vervang. Ook is het mogelijk de DXL met de notesDomparser, de NotesSaxparser, of een andere xml parser verandering door te voeren. Die verandering kan vervolgens met een DXLImporter en stream object weer worden teruggehaald naar Notes.
Met de DXL importer is het mogelijk een volledig nieuwe database maken, of in een bestaande database aanpassingen door te voeren of nieuwe elementen op te nemen.

een voorbeeld
We gaan uit van een Notes database, met meerdere forms, views, een frameset, outline, en een uitgebreide help in het using this database document. Deze database moet snel beschikbaar zijn voor een projectteam. Belangrijk is dat de database de projectnaam krijgt (en die naam komt ook voor in de outline, forms en het using document). Er is een standaard template gemaakt. Op alle plaatsen waar de projectnaam voorkomt, staat een variabele. Met behulp van een ‘uitrol’ database wordt van de template een DXL-export gemaakt. Daarin wordt door middel van zoeken en vervangen (in code natuurlijk) de variabele vervangen door de projectnaam. De nieuwe DXL wordt gebruikt om een nieuwe database aan te maken. De ACL wordt ook meteen goedgezet met behulp van code en de ACL-groepen worden aangemaakt in het Domino-adresboek. Na plaatsing hoeven de ACL-groepen in het adresboek alleen nog maar gevuld te worden. Het projectteam heeft zo snel een 'gepersonaliseerde' database. De helpdesk kan de uitrol doen en is daarmee in vijf minuten klaar.

Bij dit artikel hoort een database met voorbeeld code. Het formulier wordt geëxporteerd door de Export form agent, de agent maakt op de C:-schijf een dxl_form.dxl bestand aan.
Deze database is gemaakt met Notes 7.

Hieronder volgen enkele eenvoudige methoden om Domino design-elementen te importeren of te exporteren:

1. Domino design-elementen exporteren met de Domino Designer

stap1: Tools --> DxlUtilities --> Exporter


stap 2: Kies waar u het DXL-bestand naartoe wilt exporteren


resultaat
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE view (View Source for full doctype...)>
- <view name="defaultView" xmlns="http://www.lotus.com/dxl" version="7.0" replicaid="85256FDA006AA322" showinmenu="false" noreplace="true" publicaccess="false" designerversion="7" unreadmarks="none" onopengoto="lastopened" onrefresh="displayindicator" headers="beveled" opencollapsed="false" showresponsehierarchy="true" showmargin="true" shrinkrows="false" extendlastcolumn="false" unreadcolor="black" rowlinecount="1" headerlinecount="1" rowspacing="1" bgcolor="white" totalscolor="black" headerbgcolor="white" boldunreadrows="false" evaluateactions="false" allownewdocuments="false" allowcustomizations="true" hidemarginborder="false" marginwidth="0px" marginbgcolor="white" uniquekeys="false" useapplet="false" treatashtml="false" default="false" private="false" defaultdesign="false" allowdocselection="false" colorizeicons="false" indexrefresh="autofirstuse" indexdiscard="inactive45days" direction="lefttoright" noviewformat="false">
+ <noteinfo noteid="30a" unid="4FA979A3DD0AF0B7852570C8005243B6" sequence="2">
+ <updatedby>
+ <wassignedby>
+ <code event="selection">
+ <column itemname="$0" width="10" resizable="true" separatemultiplevalues="false" sortnoaccent="true" sortnocase="true" showaslinks="false" align="left" showasicons="false" responsesonly="false" hidden="false" twisties="false" categorized="false" showascolor="false" userdefinable="false" hidecolumntitle="false" hideinr5="false" readingorder="lefttoright">
</view>


2. Domino design-elementen exporteren en importeren met de volgende commands:

stap 1: Download dxlexport.exe en dxlimport.exe via onderstaande link:
http://pokgsa.ibm.com/home/l/d/ldaly/web/public/

Indien u niet genoeg rechten heeft om de link te openen, kunt u instructies vinden over hoe u een dxlexport.exe en dxlimport.exe kunt maken in de CAPI toolkit, in de samples\misc\xml directory.

stap 2: Gebruik de volgende commands om Domino design-elementen succesvol te exporteren en te importeren

dxlexport
databasename.nsf designelementname -o c:\path\filename.dxl -export specifieke opties

Voorbeeld van export specifieke opties:
Command om hele database te exporteren:
dxlexport databasename.nsf -o c:\path\filename.dxl -a
Command om een database van een server te exporteren:
dxlexport databasename.nsf designelementname -o c:\path\filename.dxl –s servername

dxlimport
-i c:\path\filename.dxl -d databasename.nsf -import specifieke opties

Voorbeeld van import specifieke opties:

Command om design elementen met REPLACE_ELSE_CREATE optie te importeren:
dxlimport -i c:\path\filename.dxl -d databasename.nsf -desrc
Command om bestaande documenten in een database te updaten:
dxlimport -i c:\path\filename.dxl -d databasename.nsf -docri
Command om design elements with CREATE optie te importeren:
dxlimport -i c:\path\filename.dxl -d databasename.nsf -desc

NB:
import specifieke opties zijn nodig om design-elementen te importeren.