Domino 9 und frühere Versionen > Entwicklung
Agenten asynchron starten (mittels Lotusscript)
DerRalph:
Hallo!
Auf einem Server läuft in regelmäßigen Abständen ein Agent "A".
Dieser prüft verschiedene Bedingungen und startet davon abhängig
eventuell mehrere andere Agenten auf diesem Server.
Dazu wird die Funkion "RunOnServer" benutzt.
Wie ich leider (über Log-Einträge) feststellen mußte und hier im Forum auch gelesen habe,
ist der Aufruf mittels "RunOnServer" anscheinend synchron.
Der aufrufende Agent wartet bei jedem aufgerufenen
Agenten auf dessen Ende bzw. auf eine Statusmeldung.
Gibt es einen Weg (über "Shell"?), die Agenten so zu starten,
daß sie nicht mit dem aufrufenden Agenten "verbandelt" sind?
Code-Beispiel 'Agent "A"' (vereinfacht):
...
if Bedingung_1_erfuellt then
Set agent = db.GetAgent("Agent1")
lReturn = agent.RunOnServer
end if
if Bedingung_2_erfuellt then
Set agent = db.GetAgent("Agent2")
lReturn = agent.RunOnServer
end if
if Bedingung_3_erfuellt then
Set agent = db.GetAgent("Agent3")
lReturn = agent.RunOnServer
end if
...
Im Einssatz: 5er Domino Server, 5.0.11 Lotus Notes Client
koehlerbv:
Hallo Ralph,
zunächst mal: Willkommen im Forum !
Bevor wir jetzt aber philosophieren über die Möglichkeiten des AgentManagers und seiner Abhängigkeit von der jeweiligen Serverlast usw. - mal doch bitte mal auf, was Du eigentlich erreichen willst. Ich denke, wir tun uns dann alle viel einfacher, um eine Lösung des eigentlichen Problems zu finden ;)
Bernhard
DerRalph:
Hallo Bernhard,
vielen Dank für das Willkommen.
Hier ein Versuch einer klärenden Beschreibung meines Wunsches:
Agent "A" soll seine Prüfungen durchführen (dauert wenige Sekunden),
soll gegebenenfalls die Agenten 1, 2 oder 3 "starten",
und sich dann "sofort" beenden, *ohne* auf Rückmeldungen warten zu müssen.
Mit "starten" ist gemeint, daß dem AMgr nur mitgeteilt wird, daß er irgendwann
die Agenten 1, 2 oder 3 ausführen soll (Eintrag in AMgr-Warteschlange)
Dem Agenten "A" ist es egal, ob die anderen Agenten tatsächlich auch laufen.
Ich habe anhand der Logeinträge festgestellt, daß
Agent "A" lief und den Agenten 1 gestartet hat,
Agent 1 lief und hat sich beendet (Agent "A" wurde in der Zeit suspendiert),
dann lief Agent "A" weiter, startete den Agenten 2
und als sich dieser wiederum beendet hat,
lief Agent "A" erst wieder weiter und hat sich schließlich beendet.
Diese Abhängigkeit (dieses Warten von dem Agenten A) ist nicht gewünscht.
Agent A und Agenten 1 bis 3 sollen "völlig losgelöst" (NDW-Lied :-)) voneinander sein.
Agent A und die Agenten 1 bis 3 liegen in derselben Datenbank auf einem Server X.
koehlerbv:
Meine Frage ist damit aber noch nicht geklärt: Warum willst Du, dass Agent "A" beendet wird, egal ob ein anderer von ihm gestarteter Agent dann noch läuft oder nicht ?
Da das Problem nicht ohne ist, wäre der angestrebte Sinn der Sache für eine Lösung als für eine Motivation bei der Lösungsauswahl sehr dienlich.
Bernhard
flaite:
Wenn ich mich recht erinnere - und das kann jetzt falsch sein - erzeugt Domino mehrere Agent-Manager Instanzen. Du kannst irgendwo im Serverdokument einstellen wie viele Agenten parallel laufen *dürfen*. Das sind dann glaub ich Prozesse, die du auch im Taskmanager von Windows oder über sh ta auf der Domino Konsole siehst.
Das heisst aber imho nicht, dass *du* bestimmen kannst unter welchem Agenten-Manager der Agent läuft. Ich halte es sogar für irgendwie wahrscheinlich, dass ein von einem anderen Agenten aufgerufener Agent immer unter dem selben Agentenmanager läuft wie der Aufrufer. Das ist reine Spekulation, aber für mich besteht eine Wahrscheinlichkeit, dass dies aus Optimierungsgründen so programmiert ist.
Du kannst dir aber eine Art eigene Agentenqueue selber aufbauen.
Wir haben Agent1 und Agent2.
Agent2 wird nicht mehr per Agent.run() gestartet (oder wie die Methode heisst), sondern Agent1 erzeugt ein Dokument in einer View, in dem alle Informationen stehen die Agent2 benötigt. Dann machst du aus Agent2 einen zeitgesteuerten Agenten. Er schaut beim Starten nach, ob Dokumente in dieser View stehen und verarbeitet dieselbe.
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln