Hallo Ralph,
öffentliche Diskussionen, die in Foren logischerweise asynchron laufen, können schon mal aus der Bahn geraten. Dies wird besonders befördert, wenn man nur Teilaspekte des Problems kennt - genau um dieses "Aneinander-vorbei-diskutieren" zu vermeiden, hatte ich ja auch die Fragen dazu penetrant gestellt.
Da ich Urlaub habe (und diesen geniesse), konnte ich nicht zeitnäher antworten. Jetzt aber mein Statement, insofern mir dies derzeit vernünftig möglich erscheint:
1) Du kannst Agents in dem von Dir gewünschten Weg nicht (vernünftig) "asynchron" betreiben. Notes / Domino verfolgt da eine dem entgegenlaufende Strategie: Der AgentManager (Amgr) arbeitet hauptsächlich (server-)lastorientiert, das heisst, der Server wird dem AgentManager einen Slot zuweisen, wenn dies seinem loadbalancing entspricht. Das kannst Du nicht beeinflussen.
2) NotesAgent.Run oder NotesAgent.RunOnServer unterliegen diesem Procedere und sind auf einen return value angewiesen (je nach Umstand "Agent wurde gestartet / nicht gestartet" oder auch "Agent wurde - wie auch immer - beendet". Das heisst: Es muss nicht sein, dass der gestartete Agent auch tatsächlich nicht mehr läuft, wenn Du ein return value von den Methoden bekommst !
3) Du kannst Agents auch via console commands starten (in R5 via API, in R6 auch eher mit Bordmitteln - hierzu gibt es einige Beiträge hier. Weitere Infos auf Anfrage). Aber: Dann hast Du zwar einen "asynchronen Betrieb" mit "Steueragent" und dadurch getriggerten Agents, aber Du besitzt immer noch keine Kontrolle (das bedeutet unter anderem, dass der Steueragent keine Kennung hat über Erfolg oder Misserfolg der von ihm gestarteten Agents, was den Sinn des Steueragents stark in Frage stellt).
4) Auch ich halte das Prinzip "Steueragent ruft weitere Agents auf" für nicht praktikabel oder sinnvoll. Ich würde entweder
- die einzelnen Aktionen in einen Agent packen und je nach Anforderung dort ausführen oder
- die Aktionen in einzelne Agents packen (eher nicht ...)
- Den Agent (oder die Agents) würde ich nicht periodisch starten, sondern bei "Neuen / modifizierten Dokumenten", d.h., wenn ein neues Request-Dokument in meiner DB eingegangen ist, startet der Amgr - sowie er denn Zeit dafür vom Server bekommt - asap meinen Agent, der den Request abarbeitet. So, wie ich Deine Anforderungen derzeit erkennen kann, wäre dies für mich die Methode der Wahl (ich mache dies zumindest in der Regel so).
Ich hoffe, wir sind jetzt wieder auf einer Schiene zur Lösung Deines Problems. Nochmals: Es ist eine interessante Herausforderung !
Bernhard