Antwortdokumente im Workplace Designer

11.02.2007 von Elmar Fuchs
Der Workplace Designer bietet viele Möglichkeiten, die aus der Anwendungsentwicklung unter Notes bekannt sind. Typisch für Notes-Datenbanken ist die Verbindung von Haupt- und Antwortdokumenten. Diese Beziehungen lassen sich auch in Komponenten des Workplace Designer nutzen.

Der Workplace Designer soll die Notes-Programmierer an die Entwicklung von Anwendungen für den Workplace Portalserver heranführen. Die Arbeitsweise im Workplace Designer ist eng an die des Domino Designer angelehnt. Die grafische Entwicklungsumgebung mit der Möglichkeit, Benutzerschnittstellen mittels vorgefertigter UI-Controls und der Verwendung von JavaScript zu erstellen, erlaubt auch Java-unkundigen Programmierern die Entwicklung von Komponenten bzw. Portlets. Gleichzeitig erhofft sich IBM sicherlich eine breitere Akzeptanz der Workplace- Produkte durch eine größere Entwicklergemeinde und die daraus resultierende höhere Zahl von Anwendungen im Workplace-Bereich.

Die Ähnlichkeit zwischen dem Workplace Designer und dem Domino Designer beschränkt sich nicht nur auf die Programmierumgebung. Obwohl es mit der Trennung von Daten und grafischer Benutzeroberfläche im Workplace Designer einen gravierenden Unterschied zum Domino Designer gibt, bestehen doch viele Parallelen, was die Umsetzung programmtechnischer Aspekte betrifft. Da der Schwerpunkt beider Umgebungen auf der Programmierung von dokumentenbasierten Anwendungen liegt, ist dies jedoch auch nicht überraschend.

Ein Beispiel ist der Umgang mit Haupt- und Antwortdokumenten. In Notes wird die Beziehung über das Feld $Ref im Antwortdokument hergestellt. Bei der Erstellung eines Dokuments in einer Workplace Anwendung wird dem neuenAntwortdokument über den Parameter parentid die ID des aktuellen Dokuments übergeben. Wollen Sie zu einem späteren Zeitpunkt vom Antwort- auf das Hauptdokument zugreifen, nutzen Sie die Funktion document.getParentId().

Einen Unterschied zwischen Notes und Workplace gibt es beim Löschen eines Hauptdokuments. Während in Notes die Antwortdokumente in der Datenbank erhalten bleiben, werden sie beim Löschen eines Hauptdokuments in Workplace automatisch mit aus der Datenbank entfernt.

Die Basis der Anwendung

Im Artikel „Nutzung des IBM Workplace Designer“, Ausgabe 1/06 von Expert’s inside Lotus Notes/Domino, haben wir an Hand einer einfachen Anwendung zur Verwaltung von Büchern die grundlegenden Schritte zur Erstellung einer Komponente bis hin zur Integration der fertigen Komponente auf dem Portalserver betrachtet. Um die Anwendung von Antwortdokumenten im Workplace Designer zu demonstrieren, erweitern wir unser kleines Beispiel in diesem Artikel. Die folgende Funktionalität soll implementiert werden:

Komponenten im- und exportieren

Bevor wir unser Beispiel mit Antwortdokumenten erweitern, betrachten wir die Möglichkeit zum Import und Export von Komponenten. Wollen Sie eine Komponente des Workplace Designer an einen anderen Entwickler weitergeben, so nutzen Sie die Funktion File/Export/Component. Im Fenster Export <Komponentenname> to File System bestimmen Sie den Dateinamen und die zu exportierenden Gestaltungselemente. Des Weiteren können Sie die Komprimierung und das automatische Überschreiben vorhandener Dateien aktivieren (Abbildung 1). Der Import der.jar-Datei erfolgt über den Menüpunkt File/Import/ Component. Ist bereits eine Komponente mit dem gleichen Namen in Navigator des Workplace Designer vorhanden, benennen Sie die neu einzufügende Komponente beim Importvorgang um. In unserem Beispiel bietet es sich an, die vorhandene Komponente Bibliothek zu ex- und hinterher wieder zu importieren. Dadurch steht Ihnen die erste Version immer zur Verfügung. Mit der erstellten Kopie arbeiten Sie weiter.

Bild 1: Die Einstellungen für den Export von Bibliotheken.

Neben dem Export in eine .jar-Datei stehen Ihnen zwei weitere Möglichkeiten offen. Wollen Sie den Deploymentprozess nicht mit dem Workplace Designer, sondern mit Standardmethoden wie zum Beispiel den Administratorfunktionen des Portalservers ausführen, nutzen Sie File/Export/. war file. Über File/Export/.ddl file erzeugen Sie .dll-Dateien, die Skripts zur Datenerstellung der Komponentendaten in einer Datenbank enthalten.

Antwortdokumente einrichten

Als ersten Schritt können Sie aus der Maske Buch das Label lblAnmerkung und die Editbox Anmerkung entfernen. Löschen Sie im Schema Schema_Buch das Element Anmerkung.

Als Nächstes erstellen Sie ein Schema Anmerkungen in der Komponente. Dieses Schema soll die vier Elemente ErstelltVon, ErstelltAm, Kurzeinschaetzung und Kommentar enthalten. Alle vier Elemente sind vom Typ String.

Über den Menüpunkt File/New/Form erzeugen Sie eine neue Maske für die Anmerkungsdokumente. Vergeben Sie einen Namen (Anmerkung). Ordnen Sie der Maske das neue Schema Anmerkungen zu. Wählen Sie dazu im Fenster New Form unter Data die Option Use an existing
schema.

Erstellen Sie in der Maske entsprechend den im Schema Anmerkungen definierten Elementen mit dem UI-Control-Typ Edit Box vier Felder und die zugehörigen Bezeichner vom Typ Label. Ordnen Sie den Feldern die jeweiligen Schemaelemente zu. Für die Felder ErstelltAmund Erstellt- Von können Sie die aus Notes bekannten und auch im Workplace Designer verfügbaren @Funktionen @Usernames() und @Created() nutzen. Einen möglichen Aufbau der Maske sehen Sie in Bild 2.

Bild 2: Die Maske für die Eingabe von Anmerkungen.

Um eine erstellte Anmerkung – das Antwortdokument – zu speichern oder den Vorgang abzubrechen, benötigen wir zwei Schaltflächen. In beiden Fällen soll nach der Aktion das zugehörige Buchdokument – das Hauptdokument – wieder angezeigt werden. Für die Umsetzung dieser Anforderung nutzen wir die JavaScript-Klasse XSPUrl. Ein Objekt dieser Klasse ermöglicht in Verbindung mit den notwendigen Parametern die Anzeige der gewünschten Seite. Wir benötigen drei Parameter der Klasse:

Der erstellte URL wird der Methode redirectUrlOnServer der Klasse context übergeben.

Erfassen Sie in einer JavaScript-Bibliothek die Funktionen aus Listing 3. Die Funktionen werden von den Schaltflächen Speichern und Abbrechen im Ereignis onClick aufgerufen. Der Code findet sich in Listing 1. Als Ziel verwenden wir Buch.XSP. Diese Datei enthält die Beschreibung zur Darstellung der Buchdokumente (in Form einer Server Page).

Listing 1: Programmcode für die Schaltfläche Speichern:
import <NameDerScriptbibliothek>;
saveCurrentDocumentEdit(document, context, "Buch.xsp");
Programmcode für die Schaltfläche Abbrechen:
import <NameDerScriptbibliothek>;
openParentDocument(document, context, "Buch.xsp","true");

Listing 2: Programmcode für die Schaltfläche Kommentar
erstellen
import <NameDerScriptbibliothek>;
document.save();
openNewResponseDocument(document, context, "TaskEdit.xsp");

Listing 3 : JavaScript-Bibliothek (Quelle : IBM)
function openParentDocument(document, context, ziel, autoedit) {
var url = new XSPUrl("");
url.setAddress(ziel);
if (document.hasParent()) url.setParameter("id", document.getParentId());
url.setParameter("action", "openDocument");
url.setParameter("autoedit", autoedit);
context.redirectUrlOnServer(url.toString());
}
function saveCurrentDocumentEdit(document, context, ziel) {
if (document.isEditable()) document.save();
openParentDocument(document,context,ziel,"true");
}

Listing 4: Zusätzliche Funktion in der JavaScript-Bibliothek
(Quelle: IBM)
function openNewResponseDocument(document, context, ziel) {
var url = new XSPUrl("");
url.setParameter("parentid", document.getId());
url.setParameter("action", "newDocument");
url.setParameter("autoedit", "true");
url.setAddress(ziel);
context.redirectUrlOnServer(url.toString());
}

Zur Anzeige der Anmerkungsdokumente fügen wir der Maske Buch eine UI-Control View hinzu. Vergeben Sie für die View einen Namen (vwKommentare). Auf dem Register Data im Eigenschaftsfenster ordnen Sie der View im Feld Schemas das am Anfang des Artikels für die Anmerkung erstellte Schema (Anmerkungen) zu. Beachten Sie, dass damit in der Maske Buch zwei Schemas verwendet werden: Schema_Buch für die Maske und Anmerkungen für die View. Für die Option Selection wählen Sie Show all results.

In der View benötigen wir Spalten zur Anzeige, zur Auswahl und zur Verlinkung der Anmerkungsdokumente. Der ersten Spalte ordnen Sie den Wert ErstelltVon zu. Aktivieren Sie auf dem Register Basics für die Spalte die Eigenschaften Check Box und Show values in this column as links. Die zweite und dritte Spalte beinhalten die Felder ErstelltAm und Kurzmeinung. Um für ein Buchdokument nur die zugehörigen Anmerkungen anzuzeigen, erstellen Sie eine vierte Spalte. Über die Formel document.getParentId() im Feld Formula des Registers Data ermitteln Sie für jedes Anmerkungsdokument die ID seines Hauptdokuments. Da deren Anzeige nicht notwendig ist, verbergen Sie die Spalte. Setzen Sie dazu auf dem Register Basics das Feld Visible auf False.

Die ermittelte Dokument-ID des jeweiligen Hauptdokuments verwenden Sie für den Filter der View vwKommentare. Auf dem Register Sort/Filter des Eigenschaftsfensters sorgt die Formel

"column_4 = \"" + document.getId() + "\"";

dafür, dass nur Anmerkungsdokumente, bei denen die ID des Hauptdokuments mit der des aktuell angezeigten Buchdokuments übereinstimmt, in die View aufgenommen werden. Achten Sie darauf, dass der Name der verborgenen Spalte mit dem in der Formel verwendeten übereinstimmt.

Zum Abschluss erstellen Sie noch zwei Schaltflächen in der Maske Buch zum Hinzufügen und Löschen von Anmerkungsdokumenten. Erweitern Sie die JavaScript-Bibliothek um eine zusätzliche Funktion (Listing 2). In dieser wird die aktuelle Dokument-ID dem Parameter parentid übergeben. Damit wird die Verknüpfung zwischen Haupt- und Antwortdokument erzeugt. Das Ereignis onClick der Schaltfläche Kommentar erstellen verwendet die Funktion openNewResponseDocument() und erzeugt das Antwortdokument. Der Code findet sich in Listing 2. Die Schaltfläche Kommentar entfernen nutzt die einfache Aktion Delete selected documents. Bestimmen Sie den Namen der View, auf welche sich die Aktion bezieht, in unserem Beispiel vwKommentare. Abbildung 3 zeigt die erweiterte Maske Buch nach Abschluss aller Veränderungen. Nach dem Deploymentprozess und der Einbindung des Portlets auf einer Seite der Workplace- Umgebung steht Ihnen die veränderte Bücherverwaltung mit der Möglichkeit der Erfassung verschiedener Kommentare zu einem Buch zur Verfügung (Bild 4).

Bild 3. Die Maske für die Kommentare.

Bild 4: Die Maske mit Kommentaren in der Nutzung.