Inhalt 1. Überblick 2. Zweck 3. Syntax 4. Anwendung 5. Anwendungsbeispiele 5.1 Dynamische Einbindung von Lotus Script Libraries 5.2 Dynamische Berechnung von Lotus Script Code 5.3 Konfigurierbare Aktionen 6. Beschränkungen 7. Quellen 1. Einführung Mit der Execute-Anweisung kann man Textstrings als Lotus Script-Code ausführen. 2. Zweck Lotus Script-Code kann dynamisch verwendet werden. Lotus Script-Code wird erst dann geladen, wenn er tatsächlich verwendet wird. Zudem kann man auf diese Weise ohne Designer-Unterstützung Aktionen programmieren. 3. Syntax Die Syntax der Evaluate-Funktion sieht wie folgt aus. Syntax Execute ( script$ ) Parameter script$ - Lotus Script-Code als Text-String Rückgabe. Liefert 0 zurück, wenn dem End-Statement kein Integer-Wert übergeben wurde, ansonsten den dem End-Statement übergebenen Wert. 4. Anwendung Die Execute – führt den übergebenen String als LotusScript-Code aus. Dabei müssen alle verwendeten Variablen im Teststring selbst oder als Globale Variablen deklariert werden. Als String-Begrenzer empfehlen sich Pipe oder geschweifte Klammern. Damit lässt sich Lotus Script-Code dynamisch verwenden. Zum einen können je nach Situation Lotus Script Libraries dynamisch eingebunden werden, zum anderen kann Lotus Script-Code dynamisch erstellt und zur Ausführung gebracht werden. Beispiel: ... varRet = Execute({MsgBox( “Hallo Lotus-Notes-Welt“ )} ) ... 5. Anwendungsbeispiele Anhand einiger Beispiele soll die Verwendung der Execute-Anweisung nochmals verdeutlich werden. 5.1 Dynamische Einbindung von Lotus Script Libraries Das angeführte Beispiel entstammt aus dem offiziellen Mail-Template von Lotus Notes 6 => Views\($Calendar)\Script Globals\Initialize Sub Initialize Dim session As New NotesSession If session.NotesBuildVersion Then Execute(| Use "CSUIViewClass_de-DE" set cvCalendarViewBroker = new CalendarViewBroker |) End If End Sub 5.2 Dynamische Berechnung von Lotus Script-Code Durch dynamische Text-Strings kann Code je nach belieben berechnet und zusammengefügt werden. Das folgende Beispiel zeigt nur die rudimentären Grundlagen des Ansatzes. Durch entsprechende Verzweigungen kann dieser Ansatz für ein Code-Snippet-Modell verwendet werden. Dim session As New NotesSession Dim sUsername As String Set sUsername = session.CommonUserName Execute( “Hallo ” + sUsername ) ... 5.3 Konfigurierbare Aktionen In einem Dokument ist Lotus Script Code in einem Textfeld hinterlegt. Damit lassen sich bestimmte Aktionen administrativ konfigurieren und im Frontend bearbeiten, verändern. Welcher Code ausgeführt werden kann, wird über Leserfelder geregelt, wer verändern darf über Autorenfelder. Eine weitere Eingrenzung kann über kategorisierte Ansichten vorgenommen werden. 6. Beschränkungen Die Execute-Anweisung hat gewisse Einschränkungen: - On Error-Statements sind nur innerhalb von Prozeduren zulässig - Es steht kein Debugger zur Verfügung - Keine direkte Syntax-Prüfung beim Speichern - Fehlermeldungen werden mit einer Zeilennummer ausgegeben, erschwertes Debugging - Programm-Code unterliegt den Stärken und Schwächen von Lotus Notes/DominoDokumenten => Replizierhandling, Löschen von Dokumenten, Dokumentkopien etc… Dieser Ansatz trägt ein Sicherheitsrisiko in sich, da mittels des Debuggers beliebiger Code zur Ausführung gelangen kann. Zur Ausführung kommt letztendlich der Inhalt einer Variablen, und der lässt sich im Debugger ersetzen. Daher ist dieser Ansatz nicht ganz ohne… 7. Quellen Lotus Notes Designer-Hilfe => “Execute statement” Lotus Notes Designer-Hilfe => “End statement”