Java Agent und LS-Agent hintereinander ausführen

  • Was meinst du mit Dokument aktualisieren ?
    Das im Browser die richtigen Werte angezeigt werden ?
    Das hat nichts mit dem Agentenlauf zu tun.
    Wenn du am Ende deines Agenten den anderen aufrufst, dann sollte dieser mit den aktualisierten Werten arbeiten.

  • Ist es zwingend den Agenten über die URL aufzurufen?
    Habe es jetzt so probiert:


    Sub Initialize
    Dim s As New notessession
    Dim db As notesdatabase
    Dim doc As notesdocument
    Dim outputdoc As String
    Dim unid As String
    Dim id As String
    Dim url As String
    Dim agent As notesAgent
    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext
    Set agent = db.GetAgent("(JCoAgent)")
    unid = doc.UniversalID
    id = doc.NoteID
    Call agent.RunOnServer(id)
    Set agent = db.GetAgent("(reloadWindow)")
    Call agent.RunOnServer(id)
    End Sub


    Agent reloadWindow:


    Sub Initialize
    Dim s As New NotesSession
    Dim agent As NotesAgent
    Dim doc As notesdocument
    Set agent = s.CurrentAgent
    Set doc = db.GetDocumentByID(agent.ParameterDocID)
    outputdoc = doc.GetItemValue("output_document_id")(0)
    Set doc = db.GetDocumentByUNID( outputdoc )

    url = doc.GetItemValue("url")(0)
    Print "["+url+"]"
    End Sub


    Aber das funktioniert auch nicht!
    Weiß nicht ob du den Thread von Anfang an durchgelesen hast, aber im Notesumfeld war die einzige Lösung die ich gefunden habe das Dokument zu schließen und wieder zu öffnen, um an die aktuellen Werte zu kommen.
    Nur ist das im Web ja leider nicht möglich!

  • Klar ist das im Web möglich.
    Setz ein Feld $$Return in die Maske und dort eine URL auf das Dokument selber, also mit Pfad und UNID.
    Wenn du dann ein Submit machst wird genau das gleiche Dokument wieder aufgerufen

  • Dir ist aber klar, dass Änderungen die der Benutzer zwischen Öffnen und Drücken auf diesen Knopf im Web verloren sind, da du ja scheinbar kein Speichern (Submit) machst.
    Daher würd ich dir hier einen Agenten empfehlen der im WebQuerySave aufgerufen wird.

  • Ja, aber das macht doch keinen Unterschied!
    Der User drückt auf den Button, das Dokument wird gespeichert und dann wird der Agent z.B. im WebQuerySave ausgeführt. Hatte das vorige Speichern noch nicht berücksichtigt, aber wo ich den Agenten ausführe ist doch eigentlich im Moment auch egal, oder?


    Hast du da jetzt noch einen Tipp?

  • Na es macht schon einen Unterschied, z.b. wenn das Dokument noch nie gespeichert wurde und du versuchst per UNID darauf zuzugreifen.
    Versuch es doch mal wenn du die Aufrufe im WebQuerySave machst, ob sich dein Problem damit nicht sogar erledigt

  • Hab es jetzt im WebQuerySave versucht, funktioniert aber leider auch nicht.


    So nochmal ein ausführlicher Zwischenstand. Ich benötige im Moment 2 Buttons!


    1. Button:


    @Command([FileSave]);
    @Command([ToolsRunMacro];"(WebAgent)");
    @Command([FileSave]);
    @Command([FileCloseWindow])


    Der WebAgent macht folgendes:


    Sub Initialize
    Dim s As New notessession
    Dim db As notesdatabase
    Dim doc As notesdocument
    Dim id As String
    Dim url As String
    Dim agent As notesAgent
    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext
    Set agent = db.GetAgent("(JCoAgent)")
    id = doc.NoteID
    Call agent.RunOnServer(id)
    End Sub


    Durch das FileSave und FileCloseWindow wird ein Submit ausgelöst und über das $$Return Feld wird das Dokument wieder geöffnet.


    Jetzt wird der 2. Button gedrückt:


    @Command([ToolsRunMacro];"(openPage)")



    openPage Agent:


    Dim s As New notessession
    Dim db As notesdatabase
    Dim doc As notesdocument
    Dim outputdoc As String
    Dim url As String
    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext
    outputdoc = doc.GetItemValue("output_document_id")(0)
    Set doc = db.GetDocumentByUNID( outputdoc )
    url = doc.GetItemValue("url")(0)
    Print "["+url+"]"
    End Sub


    So funktioniert es, aber wenn ich den openPage Agent direkt aus dem WebAgent starte funktioniert es nicht, weil das Submit wohl erst ganz am Ende ausgeführt wird und somit die URL sofort wieder überschreibt.
    Hast hier jemand ne Idee, wie ich das mit einem Button schaffe?

  • OK, es hat sich erledigt!!!


    Habe mir den Thread nochmal durchgelesen und ich hätte mir die ganze Mühe ersparen können! Ich war am Anfang schon ganz nah an der Lösung dran (siehe Post: Veröffentlicht am: 12.07.2004 15:45).
    Ich war so blöd und bin über "Set doc = s.DocumentContext" wieder an das Dokument gegangen. Habe diese Zeile jetzt ersetzt durch: "Set doc = db.GetDocumentByID( id )" und siehe da es funktioniert!!!!


    Trotzdem vielen Dank für deine Hife!!!