Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: MarkusL am 30.07.15 - 10:55:08

Titel: Status Agent aus Dokument abfragen
Beitrag von: MarkusL am 30.07.15 - 10:55:08
Hallo zusammen,

ich habe in einer DB einen periodischen Agenten, den ich bisher über die Menüleiste-Aktionen auf dem Server starten und stoppen kann. Das funktioniert auch soweit.

Jetzt möchte ich den Agenten aus einem Dokument per Button aktivieren. Das sollte eigentlich mit dem gleichen Code/Formel gehen wie in der Menüleiste. (Habe ich noch nicht getestet wegen Problem unten. Nachtrag: getestet und funktioniert.  ;) )

In dem Dokument gibt es ein berechnetes Feld, in das ich gerne den aktuellen Status des Agenten eintragen möchte (aktiviert/deaktiviert).
Das kann ich im Button mit hinterlegen.  :)

Wenn aber das Design der Datenbank durch eine Aktualisierung der Schablone gewechselt wird, werden meines Wissens nach alle Agenten deaktiviert und ich muss diese manuell wieder aktivieren.
Dann steht aber im Feld der falsche Status.

In berechneten Felder kann ich kein Lotus Script eintragen (zumindest finde ich das nicht). Ansonten könnte ich ja mit Agent.IsEanabled den Status abfragen.

Kann mir jemand einen Tipp geben, wie man das Problem lösen kann?
Es ist nur wichtig, dass der Status im gleichen Dokument steht, wie auch der Auslöse-Button.
Ich habe das schonmal in einer gekauften DB gesehen, aber da ist natürlich der Code verborgen.

Danke für eure Hilfe

Gruß Markus
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: Mitch am 30.07.15 - 12:39:37
Huhu,

nimm doch einfach @IsAgentEnabled("Agent"). :)

Gruß,

Mitch
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: MarkusL am 30.07.15 - 13:13:06
Hallo Mitch,

das ist aber jetzt etwas zu einfach, meinst du nicht?  :)
Wie war das mit den Bäumen und dem Wald? Und einfach, wenn es auch kompliziert geht?

Darum mag ich dieses Forum so, weil man schnell einen guten Denkanstoß bekommt.
Danke schön.

Schönen Tag noch
Markus

P.S.: Es klappt natürlich und mein Tagwerk ist für heute vollbracht. (Naja, fast............)
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: Keydins am 03.08.15 - 15:58:53
Wenn aber das Design der Datenbank durch eine Aktualisierung der Schablone gewechselt wird, werden meines Wissens nach alle Agenten deaktiviert und ich muss diese manuell wieder aktivieren.

Wenn du mit Schablonen arbeitest, kannst du dort bereits die jeweiligen Agenten aktivieren, die in der Anwendung auch nach einer Aktualisierung als Standard aktiv sein sollen.

Damit der Agent in der Schablone selber nicht läuft, in den Eigenschaften der Schablone das Häkchen bei 'Hintergrundagenten .... deaktivieren' setzen.

Ist vermutlich nicht für alle Umgebungen und Einsatzbereiche geeignet, aber bei uns funktioniert das bei einer größeren Zahl von Anwendungen bereits seit Jahren sehr gut, da wir in der Regel nur für den Eigenbedarf entwicklen.

Gruß Dirk
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: cg-home am 04.08.15 - 07:33:06
Hallo,

die Vogehensweise wie Dirk sie beschrieben hat nutzen wir auch und fahren bisher sehr gut damit.
Bevor wir es so gemacht haben, habe ich oft vergessen den/die Agenten zu aktivieren nach einem
Update über eine Schablone. Dann musste ich den/die Agenten manuell aktivieren und die DB erneut
signieren damit z.B.: nicht ich der Absender der Erinnerungsmails bin, sondern der Server.

Gruß Christian
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: thkn777 am 04.08.15 - 12:01:32
Hm... also bei uns (R8.5.3) laufen in NTF's generell keine Agenten. Egal, was in der DB-Eigenschaft steht.

Ist meines Wissens nach seit R6 so. Siehe auch hier: http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/43d5a3e9bdb4d3dc8525707f0002109d?OpenDocument

Falls jemand NSF's hat, die als Schablone funktioneren, ist das etwas anderes.
Titel: Re: Status Agent aus Dokument abfragen
Beitrag von: Peter Klett am 07.08.15 - 09:20:55
Wir verhindern das Deaktivieren von Agenten durch ein Schablonenupdate dadurch, dass wir den Code von Agenten in eine Scriptbibliothek ausgelagert haben. Im Agenten selbst befindet sich nur noch der Verweis auf die Scriptbibliothek und der Aufruf der Routine.

Zum Aktivieren des Agenten in der Datenbank verwenden wir eine eigene Schaltfläche, die dabei gleichzeitig in den Agenten einträgt, dass dieser durch Schablonenwechsel nicht geändert wird (umgekehrt verfahren wir beim Deaktiveren, falls doch einmal der Code im Agenten geändert werden sollte, was aber nur theoretisch notwendig ist).

Vor einem Update wird die Schablone mit dem gleichen User signiert, der auch den Agenten aktiviert hat (das ist systemweit immer der gleiche technische User). Der Agent läuft dadurch immer weiter, auch wenn sich der Code in der Scriptbibliothek geändert hat.

Um überprüfen zu können, ob der Agent mit der aktuellen Bibliothek läuft, haben wir darin eine Konstante mit einer Versionsnummer, die bei jedem Update angepasst wird. Diese Konstante wird beim Agentenlauf im Log angegeben.

Dieses Verfahren nutzen wir seit vielen Jahren und haben trotz häufiger Updates seitdem keine vor dem Update laufenden Agenten neu aktivieren müssen.