Domino 9 und frühere Versionen > ND8: Entwicklung

agent.run in QuerySave

<< < (3/5) > >>

koehlerbv:
Zu 1) Das ist doch egal, ob Formel oder LS. Ich sehe da keine Herausforerungen.

Zu 2) Was soll die Frage? Wie fahre ich mein Auto am besten gegen die Wand? In XPages oder extND - okay. Im QuerySave: Denk an Dein Auto.

Zu 3) Genau im QuerySave. Das ist schon der passende Ort.

Bernhard

Bruce Willis:
Na, ja, wie ein russisches Sprichwort buchstäblich übersetzt sagt:
"In den Händen von jemand anderem ist das männliche Glied immer dicker."
 ;D

Bruce Willis:
Also, ich hab gerade schnell probiert und stellte fest, dass ein LS Agent per Agent.Run einwandfrei aus QuerySave gestartet wird, seine Aufgabe richtig macht und keine Speicherkonflikte erzeugt.

z.B. dieser:


--- Code: ---Sub Initialize
  
Dim item As NotesItem
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.currentdocument
Dim doc As NotesDocument
Set doc = uidoc.Document
Set item = doc.ReplaceItemValue ( "History", doc.NewProcess(0) & Chr(13) & doc.History(0) )
Set item = doc.ReplaceItemValue ( "NewProcess", "" )

End Sub

--- Ende Code ---

Die Frage ist also, ob bzw. wie ein FS Agent aufgerufen werden könnte, damit er auch läuft.

pram:
Agenten, die mit Agent.run gestartet werden, sind Backend-Agenten, auf UI-Funktionen sollte man da tunlichst verzichten. (also keinen UI-Workspace verwenden, auch wenn es in deinem Fall zu funktionieren scheint. DON'T DO IT  :-P )
Ausgaben mit Print/Megbox landen im lokalen Noteslog.

Man kann dem Agenten eine NoteID übergeben, das Dok. muss dann aber gespeichert sein was dir im Querysave höchstwahrscheinlich einen Konflikt erzeugt.
(erst seit 8.5.? gibt es runwithdocumentcontext)
Als Workaround kann man zwar mit Temp-Dokumenten arbeiten etc... darauf will ich jetzt aber nicht näher eingehen, da alles eine ziemliche Krücke ist.

Ist denn dein Historie-Agent ein LS-Agent? Wenn ja, dann pack den Code in eine Methode in einer Scriptlibrary, der du das zu protokollierende Dokument übergibst. Das ist m.E. die sauberste Lösung.

Gruß
Roland

Peter Klett:
Wenn ich Dich richtig verstehe, hast Du das Problem, dass Du im QuerySave sowohl Script als auch Formel ausführen willst. Deshalb hast Du einen Agenten, der in Formelsprache das "alte" Querysave enthält, und den Du dann aus dem "neuen" Querysave, das in Script geschrieben ist, per agent.Run starten willst.

Wenn Dein Hauptproblem also ist, dass Du zwei Querysaves benötigst, eines in Formel und eines in Script, erstelle Dir eine Teilmaske und füge die in Deine Maske ein. Ins Querysave der Teilmaske schreibst Du Formelsprache, ins Querysave der Maske das Script (oder umgekehrt). Erst wird das Querysave der Maske, dann das der Teilmaske ausgeführt.

Hoffe, das bringt Dich weiter.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln