Generell arbeiten wir hier auch mit UI-Methoden – damit z.B. ein PostOpen des Zieldokumentes ausgeführt wird. Diese hier verwendete Methoden werden zwar offiziell gar nicht unterstützt lt. R5-Designerhilfe (Run method der agents property: „You cannot use the Notes UI classes in an agent called by this method.“), aber funktionieren hier. Lediglich ein Workaround (eine Art Reopen) ist notwendig, da wir mit einem Richtextfeld arbeiten.
Schöner Artikel!Schön, dass er Dir gefällt. Und danke fürs durchlesen.
Hat schon wer von Euch einen Überblick was in R7 neu kommt bezügl. Agents? (dann könnte man das gleich in einem Kapitel berücksichtigen)Dazu kann ich leider noch nichts sagen. Habe zwar hier mal einen Client installiert. Aber bis jetzt noch keine Gelegenheit gehabt, damit auch zu programmieren.
Was passiert, wenn es mehrere Agents gibt, die auf ein bestimmtes Event (z. B. Before/After mail arrives) reagieren?
Werden alle ausgeführt? Wenn ja, in welcher Reihenfolge? ...
Server based agents und LS frontend Klassen und Methoden. Was geht und was geht nicht ?
Dim ws As New NotesUIWorkspace ist schon ein Killerkriterium für solch einen Agent, wohingegen die Massage-Box akzeptiert (aber natürlich nicht ausgeführt wird).
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).
In R5 laufen Backend-Agenten, die UI-Klassen enthalten, bereits beim Laden auf einen Fehler und diese Agenten werden erst gar nicht ausgeführt – ein einziges Dimmen einer UI-Klasse führt hier schon zum Abbruch. Fehler die bereits beim Laden des Agenten auftreten sind schwierig zu debuggen: diese erscheinen zwar auf der Serverkonsole und im Server-Log („Unknown LotusScript error“ oder „Error loading USE or USELSX module: ....“), können aber programmatisch nicht abgefangen werden.
Ab R6 werden Backend-Agenten mit UI-Klassen geladen und ausgeführt. Sobald ein UI-Objekt im Script gedimmt wird, folgt ein Laufzeitfehler Nr. 217: „Error creating product object“. Hier kann man den Fehler mit einem simplen Errorhandling abfangen.
Aber kannst Du bitte mal ein konkreteres Beispiel nennen im Zusammenhang Backend-Agent, UI und der Execute-Function? Da komme ich jetzt nicht drauf wie man das in der Praxis sinnvoll verwenden könnte.
If bIsInteractive = True Then
'Display a prompt to select the desired year:
szExecuteCode = |
Dim ws As New NotesUIWorkspace
szContingentYear = ws.Prompt (PROMPT_OKCANCELLIST, "Auswahl Jahr", "Für welches Jahr sollen Dokumente erstellt werden ?", vSetupValidYears (0), vSetupValidYears) |
Execute szExecuteCode
If szContingentYear = "" Then
szMsg = "Die Dokumenterstellung wurde abgebrochen !"
Msgbox szMsg, MB_ICONINFORMATION, "Abbruch"
Exit Sub
End If
End If 'bIsInteractive = true"
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).
Das Problem mit den Ladezeiten umfangreicher Script-Libs habe ich auch.
Wer z.B. mal Normunds' RTLib (www.rtlib.com) eingesetzt hat, kennt das. Ist in den Globals der Maske ein "Use "RTLib"" drin, dauert es sehr lange beim Öffnen von Dokumenten.
Da wäre es sehr sinnvoll die Lib erst dann zu laden wenn man sie braucht.
Hut ab vor deinem Artikel. Finde ich sehr gelungen!