Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: HarryB am 30.08.04 - 11:42:28
-
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
-
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
-
Werden in der Script Library UI-Klassen verwendet? Falls ja, läuft der Agent nicht periodisch.
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...
Was steht in der log.nsf zu dem Zeitpunkt unter Verschiedene Ereignisse?
Das kann ich im Moment nicht so nachvollziehen, das werde ich noch mal prüfen.
Hat der Agent-Signer die erforderlichen Rechte?
yepp
Viele Grüße
Harry
-
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
-
Hm... dummerweise lässt sich das nicht so leicht trennen...
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
-
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.
Darauf wird es hinaus laufen.
Viele Grüße
Harry