Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: (h)uMan am 15.12.09 - 09:24:53

Titel: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: (h)uMan am 15.12.09 - 09:24:53
Hallo,

ich benötige einen Agenten, der als "manuelle Aktion" in allen Personendokumenten im Domino Directory ein bestimmte Feld auf einen bestimmten Wert überprüft und bei Treffer die Mailadresse aus dem Personendokument in eine festgelegte Gruppe (Mailverteiler) schreibt. Der vorhandene Mailverteiler kann überschrieben werden.

Hat jemand schon mal etwas vergleichbares gemacht und/oder könnte mir Tipps geben?

Bin kein Entwickler, aber mit etwas "Input" und Starthilfe ...

Vielen Dank schon mal!
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: ascabg am 15.12.09 - 09:31:58
Hallo,

Ja.


Andreas
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: eknori am 15.12.09 - 09:59:57
Auto-populate groups nachbauener will , junger Padavan.
Dies soll lesen er dazu: http://www.eknori.de/2008-06-23/autopopulategroup-scheduled-agent/ (http://www.eknori.de/2008-06-23/autopopulategroup-scheduled-agent/)
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: (h)uMan am 15.12.09 - 11:30:45
@eknori: gelesen und halb verstanden ich habe. Probieren ich werde ...
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: (h)uMan am 17.12.09 - 16:38:18
mit Hilfe eines Kollegen aus unserer Entwicklung nutzen wir nun folgenden Code für den Agenten:

-----------------------
Option Public
Option Explicit
Sub Initialize
'#
' Agent findet alle Dokumente in der names.nsf, die eine "1" in dem
' Feld "PhoneNumber_6" (entspricht "Pager Number") haben,
' holt sich daraus die Abbreviated-Namen und schreibt diese in das
' Feld "Members" der Gruppe "Mitarbeiter".
'#
   Dim NamesDB As NotesDatabase
   Dim dateTime As New NotesDateTime("12/01/94")               
   Dim Coll As NotesDocumentCollection
   Dim sSuchString As String
   Dim Doc As NotesDocument
   Dim oNameOwner As NotesName
   Dim aVerteiler() As String
   Dim nCounter As Integer
   
   nCounter = 0
   Set NamesDB = New NotesDatabase( "domino/server", "names.nsf")     
   sSuchString = "PhoneNumber_6='1'"
   Set Coll = NamesDB.Search(sSuchString,  dateTime, 0)
   Msgbox Trim(Str(Coll.Count)) + " Mitarbeiter gefunden." + Chr(13) + "Ok für weiter...."
   If Coll.Count > 0 Then     
      Redim Preserve aVerteiler(Coll.Count)
      Set Doc = Coll.GetFirstDocument()
      While Not Doc Is Nothing
         Set oNameOwner = New NotesName(Doc.GetItemValue ( "FullName" )(0) )
         If oNameOwner.Abbreviated = "" Then
            Msgbox "Keinen Abbreviated-Namen gefunden bei: " +Doc.GetItemValue ( "FullName" )(0)
         Else
            aVerteiler(nCounter) = oNameOwner.Abbreviated
            nCounter = nCounter +1
         End If         
         Set Doc = Coll.getnextdocument(Doc)
      Wend
   Else
      Msgbox "Es wurden keine Dokumente gefunden!"
      Exit Sub
   End If
   
   sSuchString = "ListName='Mitarbeiter'"
   Set Coll = NamesDB.Search(sSuchString,  dateTime, 0)
   If Coll.Count = 1 Then     
      Set Doc = Coll.GetFirstDocument()
      Doc.replaceItemValue  "Members", aVerteiler
      Doc.Save True, False,True
      Msgbox "Das Feld Members der Gruppe Mitarbeiter wurde erfolgreich neu geschrieben." + Chr(13) + "Programmende."
   Else
      Msgbox "Abbruch!" +Chr(13) + "Die Gruppe Mitarbeiter wurde nicht eindeutig gefunden!" + Chr(13) + "Programmende."
   End If
   
End Sub

----------------------------

Vorschläge zur Optimierung sind gerne willkommen ;-)
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: eknori am 17.12.09 - 16:51:30
Zitat
Vorschläge zur Optimierung sind gerne willkommen ;-)
Baue den Agenten in eine separate DB ein, paare das Ganze mit einem Konfigurationsdokument, welches die Selektionsformel und die Zielgruppe aufnimmt und schwupps hast du ein konfigurierbares Pfleg-Die-Gruppen-Instrument.
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: koehlerbv am 17.12.09 - 16:57:09
Hallo Uwe,

was entwickeln die Kollegen der Abteilung denn normalerweise?  ;D

Funktionstüchtig ist das Teil offensichtlich, aber es fallen gleich drei Dinge auf, die meine Stirn runzeln: Warum wird das Item "FullName" verwendet statt Owner? Da muss im ersten Element nicht zwingend der gewünschte Eintrag stehen (das Ding ist ja auch editierbar)? Warum wird die abbreviated Form übernommen statt der canonical name? Warum wird extra ein Date/Time-Objekt gebildet und wahlfrei belegt anstatt als Parameter für NotesDatabase.Search gleich Nothing zu verwenden?

Bernhard
Titel: Re: Agent für Erstellung von Mailverteiler genötigt
Beitrag von: (h)uMan am 17.12.09 - 17:44:14
Zitat
was entwickeln die Kollegen der Abteilung denn normalerweise? 
Nette Dinge mit MS VS und SQL

Warum wird das Item "FullName" verwendet statt Owner? Da muss im ersten Element nicht zwingend der gewünschte Eintrag stehen (das Ding ist ja auch editierbar)?
Bei wenigen PersDoks war kein Eintrag im Feld "Owner". Das "Warum?" prüfen wir gerade und dann nehmen wir "Owner".

Zitat
Warum wird die abbreviated Form übernommen statt der canonical name?
Unwissenheit. Ändern wir.

Zitat
Warum wird extra ein Date/Time-Objekt gebildet und wahlfrei belegt anstatt als Parameter für NotesDatabase.Search gleich Nothing zu verwenden?
weil der Kollege das nicht besser weiß ... wird aber noch ;-)