Domino 9 und frühere Versionen > ND6: Entwicklung
Agent läuft lokal aber nicht auf dem Server
HarryB:
Hi Folks,
ich habe einen Agenten geschrieben, der Zeitgesteuert auf dem Server laufen soll. Das Problem ist nun, dass mir das Agent-Log zwar sagt, dass der Agent gestartet wurde, aber tatsächlich passiert nichts (man müsste das sehen, da Dokumente Manipuliert werden).
Das erstaunliche ist: wenn ich den Agenten von Hand starte, läuft er einwandfrei durch.
Hat einer von euch eine Idee, woran das liegen könnte? Der Code ist wie folgt:
---
Sub Initialize
Dim queueView As NotesView
Dim outputRequestColl As NotesViewEntryCollection
Dim outputRequestEntry As NotesViewEntry
Dim outputRequest As NotesDocument
Set queueView = outputDB.GetView("($outputQueue)")
Call queueView.Refresh
Set outputRequestColl = queueView.AllEntries
Set outputRequestEntry = outputRequestColl.GetFirstEntry
While Not (outputRequestEntry Is Nothing)
Set outputRequest = outputRequestEntry.Document
Call computeOutputRequest(outputRequest)
Call outputRequest.ReplaceItemValue("$status", "-1")
Call outputRequest.Save(True, False)
Set outputRequestEntry = outputRequestColl.GetNextEntry(outputRequestEntry)
Wend
End Sub
---
Die outputDB wird per Use "ScriptLibrary" eingebunden und initialisiert.
Viele Grüße
Harry
Glombi:
Werden in der Script Library UI-Klassen verwendet? Falls ja, läuft der Agent nicht periodisch.
Was steht in der log.nsf zu dem Zeitpunkt unter Verschiedene Ereignisse?
Hat der Agent-Signer die erforderlichen Rechte?
Andreas
HarryB:
--- Zitat von: Glombi am 30.08.04 - 11:47:29 ---Werden in der Script Library UI-Klassen verwendet? Falls ja, läuft der Agent nicht periodisch.
--- Ende Zitat ---
Hm, in einer Subroutine, die unter den Bedingungen, unter denen das Script periodisch laufen soll aber nicht aufgerufen wird, ist auch eine UI Klasse verwendet. Der Aufruf dieser Subroutine hängt von einer Bedingung ab, die nur erfüllt ist, wenn der Agent über eine Aktion gestartet ist. Ich vermute aber, dass der Agent Manager an der Stelle keine Bedingungen prüft, sondern nur erkennt, dass da irgendwo eine UI Klasse dimensioniert ist und er sofort abbricht, oder? Das Agent Log, dass eine Laufzeit für den Agenten von 1 sec. angibt spricht auf jeden Fall dafür, dass es so ist.
Hm... dummerweise lässt sich das nicht so leicht trennen...
--- Zitat von: Glombi am 30.08.04 - 11:47:29 ---Was steht in der log.nsf zu dem Zeitpunkt unter Verschiedene Ereignisse?
--- Ende Zitat ---
Das kann ich im Moment nicht so nachvollziehen, das werde ich noch mal prüfen.
--- Zitat von: Glombi am 30.08.04 - 11:47:29 ---Hat der Agent-Signer die erforderlichen Rechte?
--- Ende Zitat ---
yepp
Viele Grüße
Harry
koehlerbv:
Wenn der Code vom (server based) agent durchlaufen wird, dann scheppert es - auch wenn der Code nicht ausgeführt wird.
Wenn es denn partout sein muss, dann müssten derartige Code-Teile durch Verwendung von Execute vor dem server based agent "versteckt" werden (sie würden dann nur zur Laufzeit kompiliert und nur dann, wenn die bedingung "client based" zutrifft).
HTH,
Bernhard
Glombi:
--- Zitat ---Hm... dummerweise lässt sich das nicht so leicht trennen...
--- Ende Zitat ---
Doch - einfach die Script Library kopieren und einen neuen Namen vergeben. Dann in der neuen alles mit ...UI... durch Variant ersetzen. Das mal als schnelle Lösung.
Grundsätzlich sollte man immer 2 Arten von Script Libraries erstellen:
- SL mit UI Klassen und die dann entsprechend benennten, z.B,
UI_MyFunctions
Als kommentar dann "Darf nicht in servergestützten Agenten verwendet werden !!!"
- SL ohne UI-Klassen.
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln