Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: cococo69 am 24.09.14 - 10:09:47

Titel: Formel-Agent mit Script aufrufen
Beitrag 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
Titel: Re: Formel-Agent mit Script aufrufen
Beitrag von: koehlerbv am 24.09.14 - 10:18:11
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
Titel: Re: Formel-Agent mit Script aufrufen
Beitrag von: cococo69 am 24.09.14 - 10:34:45
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
Titel: Re: Formel-Agent mit Script aufrufen
Beitrag von: Tode am 24.09.14 - 10:48:14
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...