Komponentenskripts

15.08.2006 von Elmar Fuchs
Workplace Designer-Komponenten werden mit dem Template-Editor zu Anwendungen zusammengestellt. In den dabei auftretenden Ereignissen können Skriptroutinen zur Umsetzung von Programmlogik ausgeführt werden.

Mittels des Template-Editors – ehemals als Workplace Builder bezeichnet – können Sie mit dem Workplace Designer entwickelte Komponenten zu Schablonen und Anwendungen zusammenstellen. Die dabei notwendigen Schritte wurden im Artikel „Schablonen und Portlets“ in der Ausgabe 4/2006 von Expert´s inside Lotus Notes/Domino vorgestellt.

Wird über den Template-Editor eine Instanz einer Komponente erstellt, werden dabei Ereignisse ausgelöst. Diese Ereignisse können Sie nutzen, um zum Beispiel in der Komponente benötigte Werte zu initialisieren oder Basisdokumente zu erstellen. Zur Programmierung dieser Ereignisse stehen im Workplace Designer die Komponentenskripts zur Verfügung.

Verwenden Sie als Basis für den Workplace Designer den Workplace Collaboration Services Server 2.5.1 oder den Workplace Services Express Server 2.5, setzt dies voraus, dass Sie einen Interim Fix für den Workplace Designer installieren. Er wird benötigt, um die diesbezüglichen Funktionen des Template Editors mit vom Workplace Designer erzeugten Komponenten zu nutzen. Das Fixpack ermöglicht die JavaScript-Logik für die Parameter der Komponenten. Der Dateiname des Fixpacks lautet LOD6N7T.JAR. Informationen zum Fixpack selbst, zu seiner Installation sowie einen Link zum Download finden Sie unter www-1.ibm.com/support/docview.wss?uid=swg 24010240.

Ereignisse

Bei der Komponentenentwicklung mit dem Workplace Designer programmieren Sie Java- Script-Code für eine Vielzahl von Ereignissen. Folgende Ereignisarten stehen zur Auswahl:

Die fünf ersten sind an verschiedene Typen von UIControls gebunden. Dabei wird jedoch nicht jede Ereignisart in allen UIControls unterstützt.

Ereignisse des Typs Form treten natürlich im Zusammenhang mit Masken auf, während die Ereignisse des Typs Component an die Komponenten gebunden sind. Im Unterschied zu den anderen Ereignistypen erfordern die Komponentenereignisse ausschließlich serverseitige Skripts. Tabelle 1 enthält eine Übersicht der für Komponenten definierten Ereignisse. Diese werden bei der Instanzierung einer Komponente mit dem Template-Editor ausgelöst.

Tabelle 1: Die Ereignisse

Ereignis

Wird ausgelöst wenn

createInstance

eine Instanz der Komponente erstellt wird;

removeInstance

eine Instanz der Komponente gelöscht wird;

addMembers

Mitglieder zu den für die Komponente
definierten Rollen hinzugefügt werden;

removeMembers

Mitglieder aus den Rollen entfernt werden.
2006_08_Lotus.qxp 20.06.2006 13:53 Seite 2127

Umsetzung im Beispiel

In den Ausgaben 1 bis 6/2006 von Expert´s inside Lotus Notes/Domino haben wir in einer Reihe von Artikeln die Anwendungsentwicklung mit dem Workplace Designer näher betrachtet. Aufbauend auf dem dort entwickelten Beispiel einer einfachen Buchverwaltung wollen wir im Folgenden ein Komponentenskript nutzen. In der Beispielanwendung können die Bücher verschiedenen Bereichen und Unterbereichen zugeordnet werden. Diese sind zu erstellen, bevor mit der eigentlichen Bucherfassung begonnen wird. Über ein Komponentenskript soll nun gewährleistet werden, dass bereits beim Beginn der Arbeit mit der Komponente Bereichsdokumente zur Zuordnung der einzelnen Bücher zur Verfügung stehen.

Öffnen Sie die Komponente im Workplace Designer. Wechseln Sie anschließend im Navigator zu Scripts/Component Scripts (Bild 1). Führen Sie auf den Eintrag Component Scripts einen Doppelklickaus. Die Liste der unterstützten Ereignisse wird angezeigt. Gleichzeitig wird der JavaScript- Editor geöffnet. Erfassen Sie für das Ereignis CreateInstance den benötigten JavaScript- Programmcode (Listing 1). Über den Befehl print() kann im Programmcode die Ausgabe von Debuginformationen in die Protokolldatei SYSTEMOUT. LOG des Portalservers erfolgen. Diese Technik wurde bereits im Artikel „Die Java-API im Workplace Designer“ der Ausgabe 6/2006 gezeigt.

Bild 1: Die Maske für die Eingabe des Komponentenskripts.

print ("Bibliothek_7: Erstellung der Bereichsdokumente");
var newDoc : DBDocument;
newDoc = database.createNewDocument("Bereiche");
newDoc.setForm("Bereiche");
newDoc.setStringValue("/Bereiche/Bereich", "Lotus Domino");
newDoc.setStringValue("/Bereiche/Unterbereich", "Administration, Entwicklung");
newDoc.save(true);
newDoc = database.createNewDocument("Bereiche");
newDoc.setForm("Bereiche");
newDoc.setStringValue("/Bereiche/Bereich", "IBM Workplace");
newDoc.setStringValue("/Bereiche/Unterbereich", "Administration, Entwicklung");
newDoc.save(true);
print ("Bibliothek_7: Erstellung Bereichsdokumente abgeschlossen");

Durch das Skript werden beim Erstellen einer Instanz basierend auf dem Schema Bereiche zwei neue Dokumente für die Bereichszuordnung erzeugt. Einer sofortigen Bucherfassung steht somit nichts mehr im Wege.

Wie das Beispiel zeigt, bieten Komponentenskripts eine gute Möglichkeit, grundlegende Einstellungen einer Komponente bei deren Instanzierung vorzunehmen.