Dokument nach Agentaufruf neu laden

  • Hallo,


    ich habe eine in einem Dokument einen Button, der einen Java Agenten startet. Dieser erstellt eine PDF Datei und hängt diese an das Dokument an.


    Anschließend soll nun das angezeigte Dokument im Notes Client aktualisiert werden, damit die Datei in dem entsprechenden RichText Feld angezeigt wird.


    Ich habe folgendes ausprobiert:
    In dem LotusSctipt, das auch den Agenten aufruft, schließe ich anschließend das Dokument. Davor merke ich mir die UniversalID. Anschließend lasse ich mir aus der Datenbank anhand der UniversalID das Dokument wieder geben und öffne es. In diesem Fall allerdings bekomme ich das Dokument mit den alten Daten angezeigt. :(
    Schließe ich das Dokument jedoch von Hand und öffne es wieder, sehe ich den Anhang. :-?




    Gibt es eine Möglichkeit per LotusScript das Dokument mit den neuen Daten zu laden?




    P.S.:
    Was ich auch noch ausprobietz habe:
    Lasse ich den Agenten (der per LotusScript aufgerufen wird) laufen, führe über einen zweiten Button per @Command([SwitchForm]; "FormSoUndSo") einen Wechsel in eine andere Maske und dort über einen Button wieder einen Wechsel zurück aus, so sehe ich den neuen Anhang. Die Lösung ist aber nicht praktikabel (vor allem nicht sehr benutzderfreundlich). Vor allem, da ich diesen Befehl nicht in LotusScript einbetten kann.

  • Also detailierter:


    • Offizieller Beitrag

    mit dem Refresh wird es nicht funktionieren, weil Dateianhänge in einem RT-Feld vorgenommen werden.


    So sollte es funktionieren:
    - erst uidoc speichern
    - uidoc schließen
    - RT-Feld im doc verändern
    - doc speichern
    - uidoc neu öffnen


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Ich habe gerade versucht Deinen Vorschlag umzusetzen:


    Wenn ich

    Code
    Dim workspace As New NotesUIWorkspaceCall workspace.CurrentDocument.Save

    aufrufe, kommt die Meldung

    Zitat

    Document command is not available.


    Du hast geschrieben

    Zitat

    uidoc neu öffnen

    Ich kenne nur

    Code
    Set doc = database.GetDocumentByUNID(unid)
    Call workspace.EditDocument(False, doc)


    Meinst Du das damit?


    Die Zeile mit dem Speichern, die die Fehlermeldung bringt, habe ich mal auskommetiert. Es funktioniert dann aber immer noch nicht.

  • So, hier mal der ganze Code (damit es einfacher zu erklären wird):


    Das Refresh hat auch nichts gebracht.

  • ist jetzt keine Antwort aber eine Frage (fast) zum Thema:


    wie hast du das PDF in Java erzeugt? Ich stehe vor dem gleichen Problem (demnächst). Hast du eine Java Lib genommen oder ein externes Programm?


    Danke im Vorraus,


    Mfg Florian

  • Ich benutze die iText Bibliothek. Damit geht es relativ gut.
    Ich lasse mir dann von Java über

    Code
    System.getProperty("java.io.tmpdir");

    das Verzeichnis für temporäre Dateien geben, erstelle die PDF Datei dort hin, hänge sie dann ans Dokument an und lösche sie wieder.

  • Hm, habe das jetzt so gelöst, dass das Dokument einfach geschlossen wird und der Benutzer es dann wieder von Hand öffnen muss. Ist aber von der Benutzerführung *******. Hat keiner eine besser Lösung parat? :-?

  • So, habe letzte Woche die Lösung gefunden und wollte sie Euch nicht vorenthalten: Man lässt den Agenten laufen und danach ruft man @Command([SwitchForm]; "Maske"); auf, wobei Maske die aktuelle Maske sein muss. Der Benutzer landet dann zwar - wenn bspw. eine Tabelle mit Reitern verwendet wird - wieder auf dem ersten Reiter, aber die Maske enthält die neuen Daten.


    Wichtig ist, dass das Umschalten der Maske auf sich selber wirklich danach erfolgt. Es gibt ja zwei Kommands in der Formelsprache, um einen Agenten zu starten (mir fallen Sie bloss gerade nicht ein, da ich zu Hause sitze und kein Notes hier habe). Einer startet einen Agenten und lässt die Formelsprache erst weiterlaufen, wenn der Agent fertig ist. Der andere Befehl startet den Agenten und lässt die Formel parallel weiterlaufen. Das Letztere geht natürlich in die Hose, da der Agenten in 99,999% fällen nach der Formel fertig ist. Damit hat man immer noch die alten Werte in der Maske.

  • Das Problem ist, dass das Notesdokument zwar geschlossen wurde, aber die Dokumentklasse noch instanziert ist. Bei einem erneuten Laden scheint der Client das Dokument aus einer Art Instanz-Cache zu laden.


    Du mußt also zuerst die Instanz löschen mit


    delete <notesdocument>


    Ich konnte zwar danach das Doc nicht über die UID wieder laden, hab es mir dann aber per Search gesucht und dann erfolgreich geöffnet.






    [quote]
    Grizzly schrieb:
    Hallo,


    ich habe eine in einem Dokument einen Button, der einen Java Agenten startet. Dieser erstellt eine PDF Datei und hängt diese an das Dokument an.


    Anschließend soll nun das angezeigte Dokument im Notes Client aktualisiert werden, damit die Datei in dem entsprechenden RichText Feld angezeigt wird.




    Gibt es eine Möglichkeit per LotusScript das Dokument mit den neuen Daten zu laden?