FSS.social
23Apr 120

XPages: runWithDocumentContext – wie man Lotus Script Funktionen in XPages nutzen kann

am Montag, den 23. April 2012

Wenn eine Lotus Notes Datenbank webfähig gemacht werden soll,
stellt sich die Frage, ob sich nicht zumindest ein Teil der Lotus Script-Codes weiter verwenden lässt.

Bzw. ob wirklich alles noch einmal in Java Script programmiert werden muss.

Ab 8.5.2 gibt es die Möglichkeit einem Agenten das aktuelle Dokument im Speicher zu übergeben.
Der Agent kann dann seinerseits Felder in dem aktuellen Dokument verändern und an den Aufrufer zurückgeben.

Ein Beispiel:
In einer XPage liegt hinter einem Weiterleiten-Button folgender Code:

(serverseitiger Javascript-Code, antragDoc ist hier der Name der aktuellen Dokument-Resource)


var agent:NotesAgent = database.getAgent("(weiterleiten)");


agent.runWithDocumentContext(antragDoc.getDocument());

antragDoc.save();
Dem Agent wird das aktuelle Dokument übergeben. Sobald der Agent mit dem Dokument fertig ist, wird dieses gespeichert.

Beim Agent "(weiterleiten)" wurde unter Security "Run as Webuser" eingestellt.
Der Code des Agenten ist in Lotus Script geschrieben und könnte wie folgt aussehen.


Sub Initialize


Dim db As NotesDatabase

Dim agent As NotesAgent

Dim session As New NotesSession

Dim actDoc As NotesDocument

Set db = session.CurrentDatabase
Set agent = session.CurrentAgent
Set actDoc = session.DocumentContext

Call Weiterleiten(actDoc)
End Sub

Call Weiterleiten() ist eine Funktion in der nun beliebig Felder des Dokumentes gesetzt werden können.

Um die Veränderungen zu übergeben muss das Dokument NICHT gespeichert werden.

Sobald der Agent fertig ist, übergibt er dem Aufrufer das veränderte Dokument.

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.