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.
Java Agent und LS-Agent hintereinander ausführen
- Inskin
- Erledigt
-
-
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 SubAgent 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 SubAber 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 -
Aber wie mache ich ein Submit unter LotusScript???
Und zwar nicht am Ende sondern mittendrin!!! -
Wo rufst du deine Agenten denn eigentlich auf ?
-
Über einen Button in einer Maske!
-
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 SubDurch 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 SubSo 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!!!