Domino 9 und frühere Versionen > Entwicklung

aktuelles Dokument des Agenten bekommen

(1/3) > >>

dia:
Also ich habe einen Agenten, der nach Eingang neuer Mail startet. Nun will ich in diesem Agenten aus der Mail die den Agenten zum starten gebracht hat etwas auslesen. Wie komme ich nun aber am einfachsten an dieses Dokument. Ich könnte mir von allen Dokumenten das neueste raussuchen. Aber gibt es da nicht eine elegantere Möglichkeit?

Danke

Glombi:
Das geht mit Script:

dim session as New NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments

Dann stehen in dc alle NotesDocumente drin. Du kannst dann mit einer Schleife über die Docs iterieren.

Andreas

dia:
Kann ich denn davon ausgehen, dass in der DocumentCollection dann nur das eine Dokument drin ist, dass den Agenten ausgelöst hat? Dieses Dokument würde dann abgearbeitet werden. Und wenn dann eine weitere Mail eingeht startet der Agent ja erneut und erstellt wieder eine Collection in der wiederum nur das eine Dokument enthalten ist, das den Agenten praktisch gestartet hat. Oder ist es auch irgendwie möglich, dass mehrer Dokumente in die Collection geraten?

Semeaphoros:
Da diese Agenten von Domino bewusst mit Abstand gestartet werden (lässt sich in der ini einstellen), und da ja mails innerhalb von Bruchteilen von Sekunden ankommen können, ist es durchaus möglich, dass da ein ganzes Büschel von neuen Mails ankommt. Das sollte aber nicht wirklich ein Problem sein, Du kannst ja die Collection durchlaufen.

Noch was, wenn man so einen Agenten deaktiviert und wieder neu aktiviert oder irgend eine Aenderung daran vornimmt, kommt es vor, dass bereits abgearbeitete Mails noch einmal als geliefert werden. Es muss also zusätzlich noch ein Mechanismus eingebaut werden, der verhindert, das Mails mehr als einmal verarbeitet werden.

Glombi:

--- Zitat von: diaFRAGma am 14.01.04 - 10:08:13 ---Kann ich denn davon ausgehen, dass in der DocumentCollection dann nur das eine Dokument drin ist, dass den Agenten ausgelöst hat? Dieses Dokument würde dann abgearbeitet werden. Und wenn dann eine weitere Mail eingeht startet der Agent ja erneut und erstellt wieder eine Collection in der wiederum nur das eine Dokument enthalten ist, das den Agenten praktisch gestartet hat.
--- Ende Zitat ---
Das ist korrekt, also geht es so:
dim session as New NotesSession
dim db as NotesDatabase
dim dc as NotesDocumentCollection
dim doc as NotesDocument
set db = session.CurrentDatabase
set dc = db.UnprocessedDocuments
set doc = dc.GetFirstDocument

Ich hatte das mit Paste-In verwechselt, da kann man ja auch mehrere einfügen. Um sicher zu gehen und Code nicht mehrfach zu entwickeln, arbeite ich aber immer nur mit Collections und einer Schleife.

Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln