Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: cococo69 am 24.09.14 - 10:09:47
-
Hallo,
ich habe folgenden kleinen Test-Agent ("Auswahl in der Agentenliste" - Ziel: Keines):
@SetField("Test_AW"; "TEST_002")
Rufe ich diesen Agent aus einem Dokument auf mit der Formel...
@Command([RunAgent]; "(test2)")
... so wird das Feld Test_AW gesetzt wie erwartet.
Rufe ich den gleichen Agent aus einem Dokument folgendermaßen mit Script auf...
Dim s As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Set db = s.CurrentDatabase
Set agent = db.GetAgent("(test2)")
If agent.Run = 0 Then
Messagebox "Agent Nr ran",, "Success"
Else
Messagebox "Agent Nr did not run",, "Failure"
End If
... so erhalte ich zwar die Meldung "Agent Nr ran" - das Feld Test_AW wurde aber nicht gesetzt!?
Woran liegt das?
Gruß Armin
-
Agent.Run lässt den Agent so alaufen, als würde er ein scheduled agent sein, er läuft im Session-Kontext. Dadurch kann er auf Interaktionen mit dem Frontend nicht reagieren, hier fehlt ihm also in Deinem Beispiel der Bezug zum geöffneten und damit ausgewählten Dokument.
Bernhard
-
Hallo Bernhard,
auch mit agent.Run( uidoc.Document.NoteID ) bekomme ich dann keinen Bezug zum aktuellen Dokument oder?
Gibt es dann überhaupt eine Chance mit Script?
Gruß Armin
-
Doch, durch Übergabe der noteid bekommst Du den Bezug (allerdings natürlich nur in LotusScript), musst aber aufpassen: Es wird eine eigene "instanz" des Dokuments geändert: Wenn der user anschliessend im Frontend Änderungen macht und speichert, bekommt er die Meldung, dass das Dokument irgendwoanders geändert wurde, und ob ein Konfliktdokumente gespeichert werden soll...
Warum soll das überhaupt nötig sein? Ein im Frontend geöffnetes Dokument durch einen Backend- Agenten zu ändern, ist meistens eine schlechte Idee...