Hallo!
Mein Problem:
Habe eine Maske mit einem Feld output_document_id und einem Button, der beim Klicken 2 Agenten ausführt:
@Command([ToolsRunMacro];"(JCoAgent)");
@Command([ToolsRunMacro];"(openURL)")
Der erste ("JCoAgent") ist ein Java Agent der, auf das wesentliche gekürzt, folgendes tut:
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document docContext = agentContext.getDocumentContext();
docContext.replaceItemValue("output_document_id", "eineDokumentID");
docContext.save(true,true);
}
catch(Exception e) {
System.out.println("Fehler in NotesMain");
e.printStackTrace();
}
Er schreibt also ins Backend Dokument aus dem er gestartet wird eine Id eines Dokuments.
Der zweite Agent ("openURL") ist ein LS-Agent und soll vorerstmal das im Java Agent geänderte Feld in einer Messagebox ausgeben. Problem hierbei ist, wie komme ich an das geänderte Backend-Dokument.
Habe folgenden ansatz:
Sub Initialize
Dim uiws As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc = uiws.currentdocument
Set doc = uidoc.Document
Messagebox(doc.GetItemValue("output_document_id")(0))
End Sub
ABER: Ich bekomme den alten Wert des Feldes zurück und nicht den geänderten.
Kann mir da jemand weiterhelfen?
In LS gibt es die Funktion NotesUIDocument.Reload, um Änderungen im Backend ins Frontend zu übernehemen. Bräuchte so etwas für Java!
Eine sehr umständliche Lösung, auf die ich eigentlich nicht zurückgreifen will, wäre im 2. Agent das Dokument zu schließen und erneut zu öffnen (funktioniert zumindest manuell).
Vielen Dank für eure Hilfe!!!
MfG
Inskin