Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: SVU am 07.05.07 - 08:00:26
-
Hallo liebes Forum!
Ich hab schon alles zum Thema Agenten hier im Forum durchsucht, aber leider nichts passendes gefunden!
Mein Problem:
Ich habe in einer Mail-In-Datenbank einen LotusScript-Agenten geschrieben, der bei Eingang neuer Mails eine Info-Mail an einen bestimmten User-Kreis schicken soll.
Wenn ich den Agenten im Designer starte, läuft er und tut genau, was er soll. Das gleiche gilt auch, wenn ich den Agenten über die Serverkonsole mit tell amgr run... starte.
Von alleine startet er aber nicht, wenn neue Mails ankommen!
Der Agent ist mit einer Admin-ID signiert, die alle Rechte auf dem Server hat und hat bei "Ausführen im Namen von" den Server eingetragen (damit dieser als Absender drin steht).
Es taucht auch kein Eintrag im Log auf, der auf irgendeinen Fehler hinweisen würde. Er tut einfach gar nichts!
Hab ich da noch was übersehen? Bitte helft mir, ich bin ratlos! :-:
Hier mal noch der Code vom Agenten:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument
Dim maildoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim Recipients(7) As String
Recipients(0) = ...
Recipients(1) = ...
Recipients(2) = ...
Recipients(3) = ...
Recipients(4) = ...
Recipients(5) = ...
Recipients(6) = ...
Recipients(7) = ...
Set db = session.CurrentDatabase
Set coll = db.UnprocessedDocuments
Set doc = coll.GetFirstDocument
While Not (doc Is Nothing)
'** Mail erstellen
Set maildoc = New NotesDocument(db)
maildoc.Form = "Memo"
maildoc.SendTo = Recipients
maildoc.Subject = "Neue Email im Postfach 'Standardization'"
maildoc.SaveMessageOnSend = False
Set rtitem = New NotesRichTextItem( maildoc, "Body" )
Call rtitem.AppendText("Im Postfach 'Standardization' ist eine neue Email eingetroffen.")
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Klicken Sie hier, um das Dokument zu öffnen ---> ")
Call rtitem.AppendDocLink( doc, db.Title )
maildoc.Send(False)
Call session.UpdateProcessedDoc(doc)
Set doc = coll.GetNextDocument(doc)
Wend
End Sub
P.S.: Beschränkte Aktionen hab ich auch schon auf zulassen gestellt!
Gruß Sascha
-
muss es nicht
Call notesDocument.Send( attachForm [, recipients ] ) heissen ?
-
Setz in den Code an den markanten Stellen mal Print "..." - Anweisungen rein. Die Ausgaben erscheinen dan in der log.nsf in den Dokumenten unter "Verschiedene Ereignisse". DA kannst du dann prüfen ob der Agent überhaupt angestoßen wird und wo es hakt.
Axel
-
Hast Du schon mal im Designer ins Protokoll des Agent geschaut, ob der überhaupt losläuft ?
Welchen Trigger hast Du eingestellt für den Agent ? Ich gehe mal von "Nach Eingang neuer Mail" aus, korrekt ?
-
Hallo.
Erstmal danke für die schnellen Antworten!
@klauss: Ich hab's auch mit Call... probiert. Kein Unterschied!
@Driri: Laut Protokoll ist der Agent nur gelaufen, als ich ihn von Hand gestartet hab. Von selber läuft er gar nicht los. Der Trigger ist natürlich "Nach Eingang neuer Mails".
Ich hab trotzdem mal einen Print-Befehl vor der While-Schleife eingefügt. Zur Sicherheit.
Gruß Sascha
-
Ich würde erstmal folgendes checken:
1. Ist in der Notes.INI des servers folgendes eingetragen:
AMGR_DISABLEMAILLOOKUP=1
2. Gibt es eine Vorgabeansicht in der Datenbank.
Andreas
-
Hallo Andreas!
In der notes.ini ist keine Zeile drin, die mit AMGR beginnt.
Eine Vorgabeansicht ist nicht definiert, nur eine Vorgabemaske! Die Datenbank basiert auf dem Standard Template dwa7. Da ist meines Wissens keine Vorgabeansicht definiert. Welche müßte das denn sein?
Sascha
-
Ich verweise auch auf diesen Artikel hier, da steht doch einiges für die Fehlersuche drin :
Troubleshooting agents in Notes/Domino 5 and 6 (http://www-128.ibm.com/developerworks/lotus/library/ls-Troubleshooting_agents_ND5_6/)
Weiter unten unter "Common agent problems" steht auch was zum Theme Mail, da wird auch der INI-Parameter kurz beschrieben.
-
Den Agenten hättest Du auch einfach zusammen klicken können.
Nach Eingang neuer Mail
Aktion Mail senden
;D
Schau evlt. mal in die log.nsf ob Dir vielleicht die Berechtigung fehlt.
-
@Driri: Hab mir den Artikel angeschaut. Bringt mich aber leider nicht weiter. Die in Frage kommenden Troublesooting-Tipps hab ich alle schon ausprobiert - ohne Erfolg.
@Christopher: Ich hatte den Agent zuerst als Simple-Action-Agent erstellt. Nachdem er aber nicht lief, dachte ich, daß es vielleicht an den Simple Actions liegt (sollen ja nicht immer so zuverläßig sein). Deshalb hab ich den Agent dann in LotusScript umgesetzt.
Das mit dem INI-Parameter kann eigentlich auch nicht die Ursache sein. Damit wird ja nur der Mailserver des Unterzeichners abgeprüft. Das ist aber der gleiche, wie der Server, auf dem der Agent läuft!
Ich hab mal mit tell amgr debug * geschaut, was er ausgibt. Das Ergebnis war folgendes:
07.05.2007 11:15:31 AMgr: Received new mail event from Router for 'mail/Standardization.nsf'
07.05.2007 11:16:32 AMgr: Start executing agent 'Mailforwarding' in 'mail/Standardization.nsf' by Executive '1'
07.05.2007 11:16:32 AMgr: '<admin-id>' is the agent signer of agent 'Mailforwarding' in 'mail/Standardization.nsf'
07.05.2007 11:16:32 AMgr: 'Agent 'Mailforwarding' in 'mail/Standardization.nsf' will run on behalf of '<servername>'
07.05.2007 11:17:32 AMgr: Agent 'Mailforwarding' in 'mail/Standardization.nsf' ran successfully; elapsed time was '0' ticks
Er erkennt also, das er was tun soll, tut dann aber doch nichts. Ein Berechtigungsproblem kanns doch eigentlich nicht sein. Der Unterzeichner und auch der Server haben beide Admin-Rechte und im Serverdokument sind keine Einschränkungen zur Ausführung von Agenten eingetragen.
Ich verzweifle wirklich noch!!
-
Wenn die DB keine Vorgabeansicht hat, dann funktioniert
Call rtitem.AppendDocLink( doc, db.Title )
nicht.
Entweder Du definierst eine Vorgabeansicht oder Du verzichtest auf den Doklink.
Du kannst bspw. die Ansicht $All als Vorgabeansicht verwenden.
Andreas
-
Hab den Fehler gefunden!
Wie oben erwähnt, hatte ich bei "Ausführen im Namen von" den Server eingetragen. Das hat bei der manuellen Ausführung auch geklappt. Nachdem alles andere nicht geholfen hat, hab ich hier jetzt mal einen anderen User eingetragen, und siehe da - es funktioniert!
Offensichtlich mag es der Agentmanager nicht, wenn in das "Ausführen..."-Feld ein Server eingetragen ist. Das wird aber weder in der Hilfe noch in dem Troubleshooting-Dokument von IBM erwähnt!
@Andreas: Der AppendDocLink hat aber bei der Ausführung per "tell amgr run..." immer funktioniert! Hab jetzt trotzdem mal noch die $All-View als Vorgabe definiert.
Vielen Dank euch allen für eure Hilfe!
Gruß Sascha
-
Offensichtlich mag es der Agentmanager nicht, wenn in das "Ausführen..."-Feld ein Server eingetragen ist. Das wird aber weder in der Hilfe noch in dem Troubleshooting-Dokument von IBM erwähnt!
Genau dafür ist aber der INI-Parameter gut.