Java und LotusScript für Notes und Domino 8

Notes/Domino 8: Neues bei LotusScript und Java

30.01.2008 von Martin Kuppinger
Bei Lotus Notes/Domino 8 gibt es, wie bei den vorherigen Versionen auch, eine Reihe von Erweiterungen sowohl für LotusScript als auch für Java. Der Artikel gibt einen Überblick über die wichtigsten Änderungen.

Bei der Erstellung von Anwendungen im Umfeld von Lotus Notes und Lotus Domino, also dem Client und dem Server, hat man inzwischen eine beachtliche Menge an Möglichkeiten. IBM/Lotus bietet immer mehr Entwicklungsumgebungen an, die für unterschiedliche Einsatzzwecke genutzt werden können. Dennoch sind die „klassischen“ Entwicklungssprachen, also insbesondere LotusScript, aber auch Java, bei der Entwicklung von Anwendungen für Notes/Domino immer noch von großer Bedeutung.

Erweitert: Die Funktionalität insbesondere von LotusScript wurde deutlich erweitert – so dass man mit dem Domino Designer noch einfacher leistungsfähige Anwendungen erstellen kann.

Dementsprechend wurde auch in der Version 8 wieder einiges getan. Insbesondere hat man die Klassen für LotusScript/OLE (und damit die Ansteuerung aus Windows-Umgebungen) und Java wieder in vielen Bereichen erweitert. Manche der Änderungen sind nur für spezielle Anforderungen relevant, andere sind dagegen von erheblicher Tragweite und helfen dabei, klassische Herausforderungen der Anwendungsentwicklung besser zu lösen.

Erweiterungen der LotusScript-Sprache

Bei LotusScript selbst gibt es insgesamt vier Erweiterungen. Zwei davon sind allerdings nicht für die Unix- und Mac OS X-Plattformen nutzbar:

Beide Anweisungen würden unter den genannten Betriebssystemen root-Berechtigungen erfordern. Auch bei anderen Systemplattformen kann es allerdings zu Fehlern kommen, wenn die entsprechenden Berechtigungen im System nicht vorhanden sind. Daher bietet es sich speziell bei diesen Anweisungen an, immer mit einer Fehlerbehandlung zu arbeiten.

Verändert wurden einige Begrenzungen für Dateioperationen. Das sind Punkte, auf die vielleicht der eine oder andere Entwickler bei speziellen Anforderungen einmal gestoßen ist. Wichtige Änderungen in diesem Bereich sind

Außerdem hat sich der Umgang mit Leerzeichen in LotusScript-Routinen teilweise geändert. Es gibt einige Routinen wie Dir oder Open, die führende Leerzeichen nach wie vor beibehalten und damit zu Fehlern führen können. Bei anderen wie Chdir und Mkdir ist das nicht (mehr) der Fall. Da es im Release 8 immer noch keine konsistente Lösung gibt, sollte man bei den eigenen Anwendungen sicherstellen, dass die übergebenen Zeichenketten für Dateinamen grundsätzlich keine führenden Leerzeichen haben.

Neue Klassen bei LotusScript: NotesDirectory

Bei LotusScript gibt es insgesamt vier neue Klassen, wobei jeweils zwei dieser Klassen zusammen gehören. Die erste Gruppe besteht aus

Diese Klassen erlauben den Zugriff auf das Notes- beziehungsweise Domino-Directory auf einem System. Die Klasse NotesDirectory repräsentiert eine Instanz eines Verzeichnisses und die Klasse NotesDirectoryNavigator stellt Methoden für die Navigation innerhalb des Verzeichnisses bereit.

Die Klasse NotesDirectory stellt einige Eigenschaften bereit, mit denen sich der Suchbereich einschränken lässt. So beschränkt man beispielsweise mit der Eigenschaft LimitMatches die Anzahl der Rückgabewerte auf 50. Es gibt allerdings keine Option, das Limit selbst zu setzen.

Zu den Methoden der Klasse gehören neben CreateNavigator für die Erstellung eines Navigators unter anderem LookupNames und LookupAllNames für die Abfrage von Namen und GetMailInfo für den Zugriff auf Email-Adressen.

Das Konzept des Navigators, der mit CreateNavigator erstellt wird und dann eine Instanz der Klasse NotesDirectoryNavigator ist, unterscheidet sich kaum von dem anderer Navigatoren. Zu den Methoden gehören FindFirstMatch oder FintNthMatch ebenso wie GetFirstItemValue oder GetNextItemValue. Man kann also sowohl Schritt für Schritt durch das Verzeichnis scrollen als auch gezielt zu bestimmten Einträgen springen.

Neue Klassen bei LotusScript: NotesProperty

Die zweite Gruppe von Klassen enthält die beiden Klassen

Diese Klassen sind speziell für den Umgang mit zusammengesetzten Anwendungen (Composite Applications) erforderlich, dem neuen mit Notes/Domino 8 eingeführten Typ von Anwendungen. Diese Anwendungen arbeiten mit einem so genannten Property Broker, der Werte von definierten Eigenschaften zwischen den verschiedenen Komponenten einer solchen Anwendung transportiert. Um Eigenschaften programmatisch bereitstellen und mit dem Property Broker kommunizieren zu können, werden die beiden neuen Klassen benötigt.

Die übergeordnete Klasse ist dabei NotesPropertyBroker, die die Klasse NotesProperty enthält. Die Methoden und Eigenschaften beider Klassen stehen nur auf dem Notes-Client zur Verfügung, wenn dort das Eclipse-Framework eingerichtet ist, weil nur auf diesen Systemen die Composite Applications nutzbar sind.

Die Klasse NotesPropertyBroker erlaubt die Definition von Eigenschaftswerten, das Lesen dieser Werte und deren Änderung. Mit der Methode Publish lassen sich Änderungen an Werten aktivieren, die per LotusScript-Code durchgeführt wurden. Der Property Broker sorgt dann für die Verteilung der Änderungen.

Bei der Klasse NotesProperty stehen die Eigenschaften (im Sinne der Programmierung, also als Gegenstück zu den Methoden verstanden) im Vordergrund. Mit diesen können einzelne Properties (im Sinne des Notes Property Brokers) definiert werden, wozu unter anderem der Datentyp, Werte und Bezeichnungen gehören.

Neue Methoden und Eigenschaften bei LotusScript

Neben den beiden grundlegend neuen Klassen gibt es eine beachtliche Zahl neuer Methoden und Eigenschaften in bestehenden Klassen sowie in einzelnen Fällen auch Änderungen beim Verhalten bestehender Eigenschaften und Methoden. So ist die Methode AddInternetCertificateToUser nun beispielsweise auch mit dem CA-Prozess von Lotus Domino nutzbar.

Die größten Veränderungen gibt es bei den Klassen

Bei NotesDocumentCollection und NotesViewEntryCollection wurden jeweils ähnliche neue Methoden hinzugefügt:

Die Methoden finden sich in gleicher Weise bei beiden Klassen. Das ist auch nicht überraschend, weil in beiden Fällen Gruppen von Objekten, die als so genannte Sammlung definiert sind, verarbeitet werden. Insbesondere die neuen Methoden zum Vergleich von zwei Sammlungen sind dabei hoch interessant, weil man mit relativ wenig Aufwand komplexe Operationen durchführen kann, die sonst viel Programmierarbeit erfordern würden.

Änderungen bei NotesDXLExporter und NotesView

Bei der Klasse NotesDXLExporter wurde die Anzahl der Eigenschaften deutlich erweitert. Mit den neuen Eigenschaften wie OmitItemNames oder OmitOLEObjects lassen sich nun noch mehr Informationen über DXL (Domino XML Language) in XML-Dateien schreiben und an andere Anwendungen übergeben.

Dagegen gibt es bei der Import-Variante, also NotesDXLImporter, nur eine Änderung. Hier kann veranlassen Sie via CompileLotusScript die Übersetzung von übergebenem LotusScript-Code.

Bei der Klasse NotesView wurden die Methoden für den Umgang mit als gelesen respektive ungelesen markierten Dokumenten erweitert. So gibt es nun die Methoden MarkAllRead und MarkAllUnread, um alle Dokumente in einer Ansicht mit einer Anweisung bearbeiten zu können. Außerdem können automatisch Navigatoren für eine Ansicht erstellt werden, die entweder alle als gelesen oder ungelesen markierten Dokumente enthalten.

Neue Methoden und Eigenschaften bei Java

Bei den Java-Klassen hat sich deutlich weniger getan als bei den LotusScript-Klassen. Das ist etwas überraschend, weil Lotus bei den vergangenen Releases stark darauf geachtet hat, die Funktionalität der beiden Objektmodelle einander anzunähern. Auf der anderen Seite gibt es natürlich bei der Nutzung von Java teilweise andere Möglichkeiten, um auf vergleichbare Ergebnisse zu kommen. So kann der Zugriff zumindest auf das Domino Directory beispielsweise auch über LDAP erfolgen, was in der Programmierung allerdings wesentlich komplexer ist als die Nutzung der neuen NotesDirectory-Klasse.

Die wesentlichen Erweiterungen sind einerseits die zusätzlich unterstützten Eigenschaften bei der Klasse DXLExporter und andererseits die Methoden, um einzelne Dokumente und Gruppen von Dokumenten als gelesen respektive ungelesen zu markieren, die – wie bei LotusScript – zu vielen Klassen hinzugefügt worden sind. Dagegen fehlen die neuen Klassen gänzlich, ebenso wie die interessanten Optionen für die Mengenoperationen auf Sammlungen fehlen.

Mit den Erweiterungen bei LotusScript und Java hat IBM Lotus die Möglichkeiten des Produkts einmal mehr erweitert und viele Funktionen realisiert, die Entwicklern bei der effizienteren Realisierung von Anwendungen helfen. Ein Blick auf die Neuerungen, die in der Hilfefunktion des Domino Designer auch umfassend dokumentiert sind, lohnt sich daher in jedem Fall, weil manche Änderung viel Entwicklungsarbeit einsparen hilft. (mha)