Nachsendeanträge sind bei normaler Post eine Selbstverständlichkeit. Wer auf diesen Komfort auch unter Lotus Notes nicht verzichten möchte, der muss selbst Hand anlegen. Der folgende Beitrag zeigt, wie dies unter Verwendung von Java als Programmiersprache realisiert werden kann. Eines der am weitesten verbreiteten Kommunikationsmedien ist heute das Internet. Fast überall besteht inzwischen die Möglichkeit, auf das Internet und damit auch auf e-Mails zuzugreifen. Nicht jedes Unternehmen will allerdings, dass der Lotus Domino Server dem „Risiko“ Internet ausgesetzt ist. Wer trotzdem von unterwegs seine Nachrichten abrufen möchte, ohne gleich ein Notebook mit einem Lotus Notes Client im Gepäck zu haben, für den bietet der folgende Artikel eine Möglichkeit zur Erstellung eines Agenten, der auf Wunsch die eingehenden e-Mails auf einen im Internet erreichbaren Mailserver weiterleitet (z.B. bei einem Free-Mailer wie WEB.de oder GMX). Damit ist der Abruf von jedem Internetanschluss aus möglich. Als ein weiterer Aspekt wird aufgezeigt, was bei der Entwicklung eines Agenten in Java für Lotus Domino zu beachten ist.

Die Lösung des Problems

Der Agent soll mehr können als nur die Weiterleitung der eingehenden e-Mails:

  • Einfache Befehle in der Betreffzeile von e-Mails sollen für das Einstellen der Parameter des Agenten verwendet werden können.
  • Dateianhänge sollen abgeschnitten werden, da sie bei weitergeleiteten e-Mails oft nicht benötigt werden.
  • Ein einfacher Zugriffschutz auf die Einstellungen des Agenten wird realisiert: Nur der Lotus Notes-Mailbenutzer und der Benutzer, der in der Weiterleitungsadresse eingetragen ist, können die Parameter für den Agenten verändern.
  • Für die Weiterleitung der Nachrichten werden verschiedene Modi implementiert.
  • Die Prüfung ist auf den Inbox-Ordner beschränkt und dort auf die neuen Nachrichten.
  • Der Agent kann zeitgesteuert oder über den „Neue Nachricht“-Event gestartet werden.
  • Die Parameter werden in einem Profile-Dokument in der Maildatenbank des Benutzers gespeichert.
  • e-Mails vom Benutzer selbst und von der Weiterleitungsadresse werden nicht weitergeleitet.
  • Alle Fehlermeldungen werden in eine getrennte Fehlerdatenbank protokolliert, die auf der Standardfehlerprotokoll-Datenbank (alog4.ntf) basiert.
  • Die e-Mails, die vom Agent weitergeleitet wurden, werden als gelesen markiert, aber nicht gelöscht.

    Was wird benötigt?

    Damit die im Folgenden beschriebene Vorgehensweise nachvollzogen werden kann, müssen folgende Voraussetzungen erfüllt sein:

  • Der Benutzer muss Zugriffsrechte zum Starten von persönlichen Agenten haben.
  • Ein Lotus Domino Designer Client muss installiert sein.
  • Der Zugriff auf die Maildatenbank auf dem Lotus Domino Server ist möglich.
  • Die Datenbankschablone alog4.ntf (oder später) ist verfügbar.

    Was ist zu tun?

    Der gesamte Agent besteht aus mehreren Teilen (s. Abb. 1):

  • einer Klasse (MailWeiterKlasse), die das Mailverarbeitungsobjekt mit seinen Methoden enthält,
  • einem Profile-Dokument, in dem die benutzerspezifischen Parameter gespeichert werden,
  • einer Protokolldatenbank, die auf der Datenbankschablone alog4.ntf basiert, in der auftretende Fehler und Statusmeldungen protokolliert werden,
  • einem Agenten (MailWeiterAgent), der stündlich aufgerufen wird, der als Selektion die neuen Nachrichten im Inbox-Ordner hat und der das Mailverarbeitungsobjekt aufruft.

    Bild 1

    Diese Komponenten werden schrittweise angelegt, bis der funktionsfähige Agent zur Verfügung steht. Alle Teile des Agenten werden in der Maildatenbank des Benutzers erstellt. Sie wird mit dem Lotus Notes Designer Client über den Menüpfad „Datei – Datenbank – Öffnen“ geöffnet. Wichtig ist, dass die Datenbank auf dem Lotus Domino Server verwendet wird, da der Agent dort laufen soll und nicht auf dem lokalen PC.

    Anlegen der Scriptbibliothek

    Als ersten Schritt legen wir ein getrenntes Modul als Scriptbibliothek an. Dabei stellt sich dem einen oder anderen Benutzer sicher die Frage: Warum eigentlich eine getrennte Scriptbibliothek? In dem Agenten, den wir entwickeln, sollen nicht alle, sondern nur die neuen e-Mails eingelesen werden. Unter Lotus Notes wird die Information, welche Dokumente schon von dem Agenten bearbeitet wurden, jedoch beim Agenten selbst gespeichert. Jede Änderung an dem Agenten würde dazu führen, dass alle bereits gelesenen Dokumente noch einmal durchgeprüft werden. Um dies zu vermeiden, wird die Klassendefinition in einer getrennten Scriptbibliothek gespeichert und nur von dem Agenten aufgerufen. Damit kann an der eigentlichen Klasse beliebig geändert werden, ohne dass dadurch das Lesen der Dokumente wiederholt wird.

    Bild 2

    Die Scriptbibliotheken befinden sich im Bereich „Ressourcen“. Hier gibt es einen Abschnitt „Script Bibliotheken“. Klicken Sie auf den Button „Neue Script Bibliotheken“ (vgl. Abb. 2). Der Lotus Domino Designer öffnet nun ein Fenster, in das neuer Quellcode eingegeben werden kann. Da wir unsere Anwendung in Java erstellen, muss in der Auswahlbox links oben „Java“ ausgewählt werden (s. Abb. 3). Löschen Sie den vorgeschlagenen Standardcode, den der Lotus Notes Designer beim Anlegen erzeugt. Alle Teile des Quellcodes sind im Internet auf der Webseite des ITP-Verlages zu finden. Laden Sie die ZIP-Datei aus dem Internet und entpacken Sie sie in ein Unterverzeichnis auf Ihrem PC. Öffnen Sie die Datenbank „MailWeiter.nsf“. An der gleichen Stelle (Ressourcen / Scriptbibliotheken) befindet sich eine Scriptbibliothek mit dem Namen „MailWeiter“. Öffnen Sie diese Bibliothek und kopieren Sie deren Inhalt mit Cut&Paste in die Scriptbibliothek, die wir eben neu erstellt haben. Wichtig ist hierbei, dass der Quellcode, der automatisch generiert wurde, vorher gelöscht werden muss.

    Bild 3

    Anpassung an den Benutzer

    Um den Agenten auf den Benutzer einzustellen, müssen die folgenden Variablen, die sich in der Scriptbibliothek befinden, angepasst werden. Sie befinden sich ganz am Anfang des Java-Programmes:


    //MailWeiter Protokoll-Datenbank zum Agenten
    private static final String sMailLogDB= „weiterlog.nsf“;

    //Notes Server auf dem die Logdatei gespeichert ist
    private static final String sMailLogServer=“gracentra/WSE7/de“;

    //Standard Weiterleitungs-e-Mail-Adresse
    private static final String sDefaultForwardingAddress=“markus.schulte@web.de„;

    //Notes Name des Eigentümers der Maildatenbank
    private static final String sMailDBOwnerName=“Markus Schulte/WSE7/de“;

    //Startwert für den Ausführungsmodus
    private static final String sDefaultMode = „normal“;

    Diese Werte werden hier eingestellt und beim ersten Start des Agenten in das Profile-Dokument geschrieben. Sie können über Befehle, die in der Betreffzeile einer e-Mail stehen, geändert werden.

    Anlegen eines Projektes

    Als Nächstes wird für die Umwandlung und Verwaltung der neuen Java-Klasse ein Projekt benötigt. Klicken Sie auf den Button „Projekt anlegen“ links unten. Im folgenden Fenster klicken Sie beim ersten Mal nur auf „OK“, um die neue Klasse aufzunehmen und zu speichern. Lassen Sie es durch Klicken auf den Button „Kompilieren“ umwandeln. Das Projekt ist nun angelegt. Speichern Sie die Scriptbibliothek unter dem Namen „MailWeiter“.

    Wenn Sie Änderungen durchgeführt haben, muss vor dem Kompilieren erst über die Auswahl „Browse“ der Pfad angegeben werden, der nach Modulen durchsucht wird. Die hier benötigte Auswahl ist „Shared Java Files“. Wählen Sie dann das geänderte Modul im Fenster „Available Java Files“ an, und im Auswahlfenster rechts (Current Agent Files) die Datei, in die der kompilierte Java-Code geschrieben werden soll. Klicken Sie auf den Button „Aktualisieren“.

    Bild 4

    Anlegen des Profile-Dokumentes

    Im nächsten Schritt wird ein Profile-Dokument angelegt. Diese Art der Dokumente ist dazu gedacht, benutzerspezifische oder datenbankspezifische Informationen in dazugehörigen Feldern zu speichern. Pro Lotus Notes-Datenbank existiert in der Regel nur ein Profile-Dokument pro Benutzer. Die Methoden, die in dem Agenten verwendet werden, um mit dem Dokument zu arbeiten, heißen MailWeiter::getProfileDocValue zum Auslesen der Werte und MailWeiter::setProfileDocValue zum Schreiben der Werte. In den Methoden wird die entsprechende get-/setProfileDocument-Methode des DataBase-Objektes der Lotus Java-Klassen verwendet, um das Dokument zu lesen bzw. zu schreiben. An diese Methode werden als Parameter der Name des Profile-Dokuments, das wir oben angelegt haben, sowie der Benutzername der aktuellen Session (s. Abb. 4) weitergegeben. Danach wird dann das gewünschte Feld gelesen bzw. geschrieben. Um das Dokument anzulegen, wählen Sie über das linke Auswahlfenster („Zuletzt verwendet“) den Menüpunkt „Masken“ aus. Über den Button „Neue Maske“ wird das Profile-Dokument angelegt. Fügen Sie die zwei Felder „Mode“ und „e-Mailadresse“ ein (s. Abb. 5). Alternativ können Sie die Felder auch aus der Beispieldatenbank kopieren. Speichern Sie die Maske unter dem Namen „MailWeiter“. In der Übersicht der Forms wird über das Eigenschaftenfenster nun noch eingestellt, dass die Maske nicht im Menü auftauchen soll. Damit steht das Profile-Dokument zur Verfügung.

    Bild 5

    Aufrufenden Agenten erstellen

    Der aufrufende Agent wird im Bereich „Ressourcen“ angelegt und zwar im Abschnitt „Agents“. In unserem Beispiel wird der Agent stündlich einen Aufruf der „MailWeiter“-Klasse vornehmen. Dazu wird die Methode MailWeiter::start() verwendet. Die leere Schablone wird durch Klicken auf den Button „Neuer Agent“ erstellt (s. Abb. 6). Im Feld Name wird MailWeiter eingetragen. In der Auswahlbox „Wann soll dieser Agent gestartet werden?“ gibt es zwei Möglichkeiten: 1. zeitgesteuert und 2. ereignisgesteuert (z.B. wenn neue e-Mails eintreffen). Für die erste Alternative wählt man hier „Periodisch: Mehrmals am Tag“. Der Button „Zeitplan“ kann jetzt angeklickt werden, um auszuwählen, in welchen zeitlichen Abständen der Agent gestartet werden soll. Die zweite Alternative wird durch die Option „Nach Eingang neuer Mail“ ausgewählt. In unserer Anwendung soll das Durchsuchen der Datenbank auf den Ordner „Eingang / Inbox“ begrenzt werden, um die Verarbeitungszeit möglichst klein zu halten. Dazu wird in der Auswahlbox „Für welche Dokumente soll er gelten“ die Option „Alle neuen und geänderten Dokumente seit dem letzten Start“ ausgewählt. Die Auswahl des Ordners erfolgt über den Button „Suche hinzufügen“.

    Bild 6

    Für den Quellcode gilt das Gleiche wie bei der Scriptbibliothek: Er wird aus dem Agenten der Beispieldatenbank in die eigene Maildatenbank kopiert, nachdem der Rahmen, den der Lotus Notes Designer beim Anlegen eines Java-Agenten generiert, gelöscht wurde. Genau wie oben muss auch hier als Typ für die Art des Quellcodes „Java“ ausgewählt werden. Nach dem gleichen Verfahren wie oben beschrieben, muss für den Agenten ein Projekt angelegt werden. Damit die Klasse MailWeiter aus der Bibliothek mit eingebunden wird, muss sie zum Projekt hinzugefügt werden. Dazu wird in der Dialogbox, die sich nach dem Klicken auf „Projekt bearbeiten“ öffnet, zunächst im Auswahlfeld „Durchsuchen“ die Option „Gemeinsame Java-Bibliotheken“ gewählt. Die Klasse MailWeiter erscheint im darunter liegenden Fenster und wird angeklickt. Sie wird mit dem Button „Dateien hinzufügen/ersetzen“ dem Projekt hinzugefügt. Damit kann der Agent kompiliert werden. Wichtig ist auch, dass Sie auf dem Lotus Domino Server als ein Benutzer eingetragen werden, der Java und Java-Script-Programme ausführen darf, da sonst der Lotus Domino Server die Ausführung verweigert (s. Abb. 7).

    Bild 7

    Datenbank für Statusmeldungen und Fehlermeldungen

    Da der Agent auf dem Lotus Domino Server abläuft, ist keine direkte Kommunikation mit dem Lotus Notes Client sinnvoll (z.B. bei Fehlermeldungen). Eine Alternative die sich für solche Zwecke anbietet, ist die Datenbankschablone „Agent-Protokoll (alog4.ntf)“. Diese Schablone wird von den Protokollierungsmethoden in den Klassenbibliotheken von Lotus Notes verwendet. In der Datenbankschablone ist eine Ansicht implementiert, mit der die Meldungen als Übersicht kontrolliert und auch die einzelnen Meldungen im Detail angesehen werden können. Die Datenbank wird auf dem Server angelegt, indem über den Menüpfad „Datei – Datenbank – Neu“ das entsprechende Dialogfenster geöffnet wird. Zu beachten ist hierbei:

  • Die Datenbank muss auf einem Lotus Domino Server anlegt werden (auf den der Benutzer Zugriff haben muss).
  • Als Schablonenserver muss auch der Lotus Domino Server gewählt werden.
  • Manchmal muss die Auswahl „Weitere Schablonen anzeigen“ ausgewählt werden, damit die Schablone „Agent-Protokoll“ angeboten wird.

    Wenn der Agent läuft, sieht die Übersicht über die protokollierten Ereignisse aus wie in der Abbildung 8 (die Fehlermeldungen mit den roten Kreuzen wurde beim ersten Lauf des Agenten erstellt, als die entsprechenden Variablen im Profile-Dokument noch nicht gesetzt waren).

    Bild 8

    Umleitung eingerichtet!

    Damit sind alle Schritte durchgeführt und der Mail-Weiterleitungsagent ist fertig! Die Statusmeldungen und Fehlermeldungen werden in die Datenbank „Weiterlog.log“ geschrieben und können dort kontrolliert werden. Der Ausführungsmodus kann jederzeit mit einer e-Mail an sich selbst geändert werden. Was jetzt noch fehlt, ist nur noch ein Agent, der die e-Mails automatisch beantwortet.

    Da der Umfang aller Java-Sourcen mehrere Seiten umfasst, kann eine Beispieldatenbank mit dem kompletten Quellcode per e-Mail beim Autor oder bei der Redaktion angefordert werden.

    WSE Werner Schulte EDV-Systeme GmbH

    D–74257 Untereisesheim

    Telefon: 07132/99437
    markus.schulte@arnold-und-stolzenberg.de