Domino 9 und frühere Versionen > Entwicklung

LS --> Agent durch Agent starten

(1/3) > >>

Charly77:
Moin Moin!

Dringlichkeit: "Ist nur ein Test und nicht überlebenswichtig, sozusagen >Nice to know<"

Folgende Lage: "Ich versuche auf einem Domino 5 Server mehrere Script-Agenten durch einen anderen Script-Agenten zum laufen zu bringen."

Hintergrund:
1. "Es sollen nicht immer alle Agenten als "periodisch" laufen(unübersichtlich)"
2. Es sind nur bestimmte DB betroffen (hier im Ordner "Test" auf dem Test-Server)
3. Alle Agenten sollen hier "dynamisch" gestartet werden können (DB mit betroffenen Agent in den Ordner repilzieren, fertig"


Bisheriges Ergebnis:
1. Wenn ich den Agenten per Hand starte, funktioniert alles wunderbar.
2. Sobald der Agent "periodisch" läuft, werden die anderen Agenten, die er "anschubst" nicht ausgeführt.
3. Das Protokoll des "periodischen" Agenten sagt "Script ohne Fehler ausgeführt"
4. Die Protokolle der anderen Agenten sagen "Nüx gemacht"
5. Der Server hat auf alle DB "Manager"-Zugriff, um diesen Fehler schon mal auszuschliessen

Hier der Code (Scriptbibliothek)

Ich habe mir in der "catalog.nsf" eine Ansicht gebastelt, aus der ich die Namen der betroffenen Datenbänke auslese.


--- Code: ---Function Agenten_starten
Dim se As New NotesSession
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim agent As NotesAgent

Set db = se.GetDatabase("Test-Server", "catalog.nsf")
Set view = db.GetView("test")
Set doc = view.GetFirstDocument

While Not doc Is Nothing
Pfad = doc.GetItemValue("Pathname")
Titel = doc.GetItemValue("Title")
L1 = Len(Pfad(0))
L2 = L1 - 12

db_Name = Right(Pfad(0), L2)
Set db2 = se.GetDatabase("Test-Server", Cstr(db_Name))
Gosub agent

Set doc = view.GetNextDocument(doc)
Wend

Goto ende

agent:
Call db2.Open( "Test-Server", "Test\"+Cstr(db_Name) )
Set agent = db2.GetAgent("(Testagent2)")
If agent.Run = 0 Then
Print "Agent ohne Fehler ausgeführt!"
Else
Print "Agent wurde abgebrochen!"
End If
Call db2.close
Return

ende:
End Function

--- Ende Code ---

Driri:
Auf was für einen Ausführungstyp sind denn die anderen Agenten gestellt ?

Ich meine die müssen periodisch sein, damit die von einem anderen Agenten aus aufgerufen werden können.

Charly77:
Moin Diri,

die anderen stehen auf "Manuell aus der Liste der Agenten",
dass war auch so beabsichtigt weil diese halt nicht periodisch laufen sollen, es sei denn der eine "Master-Agent" läuft und schubst diese an.

P.s.: Wenn ich den Master-Agenten manuell ausführe funktioniert das aufrufen der anderen einwandfrei.

Ich werde "periodisch" mal ausprobieren!

m3:
Auf einem 6er-Server funktioniert das wunderbar - die aufgerufenen Agenten sind zwar auf "periodisch" eingestellt, aber deaktiviert.

1) Bau mal ein paar "Print" Statements in die anderen Agents ein, damit Du im Log siehst, ob sie gestartet wurden.

2) Call db2.Open( "Test-Server", "Test\"+Cstr(db_Name) )
Das würde ich durch ein

--- Code: ---erg = db2.Open( "Test-Server", "Test\"+Cstr(db_Name) )
if( not erg) Then
...
--- Ende Code ---
ersetzen.

3) Set agent = db2.GetAgent("(Testagent2)")
Das würde ich durch ein

--- Code: ---Set agent = db2.GetAgent("(Testagent2)")
If Not(agent Is Nothing) Then
...
--- Ende Code ---
ersetzen.

Driri:
Ich kann mich dunkel erinnern, daß ich so ein Problem auch schon mal hatte. Ich habe dann die aufzurufenden Agenten auf "Periodisch : Nie" gestellt und dann funktionierte das auch.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln