Domino 9 und frühere Versionen > ND9: Entwicklung
Frage zu Java Agenten
jBubbleBoy:
dann schreib den Agentenaufruf in LotusScript 8)
Der Unterschied zu vorher (von PostSave zu QuerySave) besteht darin das dein Ui-Dokument noch nicht gespeichert wurde, der Agent benötigt aber genau das. Das ist so, weil es in Java keine NotesUi-Klassen gibt.
Bruce Willis:
--- Zitat von: jBubbleBoy am 01.03.18 - 17:06:39 ---dann schreib den Agentenaufruf in LotusScript 8)
Der Unterschied zu vorher (von PostSave zu QuerySave) besteht darin das dein Ui-Dokument noch nicht gespeichert wurde, der Agent benötigt aber genau das. Das ist so, weil es in Java keine NotesUi-Klassen gibt.
--- Ende Zitat ---
Nochmals Danke.
Gerade getestet.
Aber auch in QueryClose bekomme ich die gleiche o.g. Fehlermeldung "Could not execute Macro". :(
Warum aber? :-:
jBubbleBoy:
OK, da hat der Agent den Bezug zum Dokument verloren.
Dann die Note-ID des Dokumentes dem run-Befehl mitgeben und in Java das Dokument mittels getParameterDocID holen, dann noch das Ziel beim Agenten ändern, das sollte gehen ;)
Werner Götz:
Das Ganze im QueryClose aufzurufen wird das ursprüngliche Problem zwar mildern (der Fehler wird immer noch auftreten, wenn z.B. Validierungsprüfungen im Dokument das Schließen verhindern), aber weitere Probleme mit sich bringen:
- Was passiert z.B., wenn jemand das Dokument lange geöffnet lässt? Dann bekommt "die andere Seite" ja lange nicht mit, dass gespeichert wurde.
- Wenn Notes oder Windows anschließend mal abstürzen erfolgt überhaupt kein Aufruf.
Auch wenn das nicht allzuoft vorkommen wird muss geklärt werden: Kann man damit leben?
Man sollte das Ganze wohl im PostSave belassen, aber z.B. so umschreiben, dass der Agent mit RunWithDocumentContext das aktuell geöffnete Dokument (aus dem Hauptspeicher) nutzt und das Durchrechnen sowie erneute Speichern nach dem Aufruf dann anschließend ebenfalls im PostSave-Event gemacht wird.
Bruce Willis:
--- Zitat von: jBubbleBoy am 01.03.18 - 19:35:34 ---OK, da hat der Agent den Bezug zum Dokument verloren.
--- Ende Zitat ---
Kann man also einen bzw. so einen Java Agenten nur über FS aber nicht über LS aufrufen, da beim Aufruf über LS (egal ob in einem Event oder Button) die gleiche o.g. Fehlermeldung kommt?
--- Zitat von: jBubbleBoy am 01.03.18 - 19:35:34 ---Dann die Note-ID des Dokumentes dem run-Befehl mitgeben und in Java das Dokument mittels getParameterDocID holen, dann noch das Ziel beim Agenten ändern, das sollte gehen ;)
--- Ende Zitat ---
Es hört sich einfach an. ;)
Kannst Du bitte den o.g. Java-Code um die ein paar benötigten Zeilen entsprechend erweitern?
Den LS Code könnte ich so erweitern, oder?
--- Code: --- Dim s As New NotesSession
Dim db As NotesDatabase
Dim agent2 As NotesAgent
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set agent2 = db.GetAgent("bestellAkteInAgorumPflegen")
Set doc = Source.Document
If agent.Run(doc.NoteID) = 0 Then
Print "Agorum-Agent erfolgreich gelaufen"
Else
Messagebox "Agorum-Agent konnte nicht gestartet werden",64, "Bitte Ihrem Notes Admin melden"
End If
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln