Domino 9 und frühere Versionen > Entwicklung

Datums-Agent Benachrichtigung

(1/2) > >>

niteshift:
Hallo zusammen.
Ich habe in Formularen Datumsfelder, wo man z.B. Deadlines erfasst. Ein Agent soll nun, wenn das Datum, welches erfasst wurd, dem Autor, welches das Form erfasst hat, eine Mail-Mitteilung senden, dass das Deadline erreicht ist und er nun z.B. eine Zahlung machen muss, oder was auch immer gewünscht wird.

Hat jemand schon so einen Agent eingerichtet?

Ich bin zwar mit dieser DB schon ziemlich weit gekommen, bin aber was Agents, Formeln und Scripts angeht, noch sehr unerfahren.

Vielen Dank für die Hilfe.

Axel:
Hi,

das ist relativ einfach. Du brauchst einen getriggerten Agent, der einmal am Tag läuft, beisplielsweise um 5:00 Uhr. Der überprüft dann das Datum und sendet die Mails.

Ich hab so was ähnliches schon mal gemacht.
Der Agent könnte grob so aussehen:


--- Zitat ---Sub Initialize
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument   
   Dim docMail As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim strSearch As String
   
   On Error Goto ErrorHandler
   
   Print "Agent ""CheckStatus"" wurde gestartet."
   
   Set db = session.CurrentDatabase
   
   'Suche alle Dokumente mit der Makse frmAufgabe und die im Feld FaelligAm das heutige Datum enthalten
   strSearch = {@Contains(xForm; "frmAufgabe") & @Today = @Date(FaelligAm)}
   
   Set collection = db.Search(strSearch, Nothing, 0)
   
'   Messagebox Str(collection.count)
   Print "Agent ""CheckStatus"" hat " & Str(collection.count) & " Dokument(e) zur Bearbeitung gefunden."
   
   If ( collection.Count > 0 ) Then
      Set docMail = New NotesDocument(db)
      docMail.Form = "Memo"
      docMail.SendTo = doc.User
      docMail.Subject = "Überfällige Aufgabe(n)"
      Set rtitem = New NotesRichTextItem(docMail, "Body")
      Call rtitem.AppendText("Folgende Aufgabe(n) wurde(n) nicht bis zum Fälligkeitsdatum abgeschlossen:")
      Call rtItem.AddNewLine(2, True)
      
      Call rtitem.AppendDocLink(docTmp,"")
      Call docMail.Send(False)
      
   End If  'If ( collection.Count > 0 ) Then
   
   
   Print "Agent ""CheckStatus"" wurde erfolgreich beendet."
   Exit Sub
   
ErrorHandler:
   Print "Agent ""CheckStatus"" wurde mit dem Fehler " & Cstr(Err) & " -> " & Error$(Err) & " beendet."
   Exit Sub
   
End Sub

--- Ende Zitat ---


Axel

Axel_Janssen:
Ich würde die db.Search expression so machen:
strSearch = {@Contains(xForm; "frmAufgabe") & @Today <= @Date(FaelligAm) & fSchonBearbeitet!="1"}

und unten durch die Schleife der gefundenen Dokumente iterieren und für jedes Dokument doc.fSchonBearbeitet="1"

Das erhöht die Robustheit der Anwendung, wenn der Agent einen Tag mal nicht läuft.

koehlerbv:
... und dann das Ganze nicht mit NotesDatabase.Search machen, sondern dafür eine (versteckte) Ansicht bauen, die nur die Dokumente beinhaltet, die für den Agent in Frage kommen. Das geht flotter - und kann auch besser beobachtet werden.

HTH,
Bernhard

niteshift:
 :) Ich danke Allen für die tolle Unterstützung. Werde den Agenten gleich mal aufbauen (sobald mein Notebook wieder richtig läuft - Homedrive ist weg) und dann berichten.

Gruss, Paul

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln