Domino 9 und frühere Versionen > ND6: Entwicklung

Send Newsletters Agent aus Discussion DB soll Leserfelder berücksichtigen

<< < (2/2)

daija:
Also Hintergrund ist eigentlich, dass wir die Discussion DB als einfaches DMS verwenden und nicht wirklich als Diskussionsforum. Daher die Erweiterung von Leser und Autorenfelder.
Das Featcher "Send Newsletter" fanden wir ganz brauchbar sind aber jetzt über die anfangs beschriebene Problematik gestolpert.
Wie könnte denn eine Lösung als private Agent aussehen?

outerspace:
Hallo,

Du erstellst einen Agenten, der aus dem Actions-Menü gestartet werden kann,
der über new & modified Documents läuft.
Dann sollte die session.Database.UnprocessedDocuments Collection alle Dokumente enthalten, die zu diesem Zeitpunkt neu oder verändert sind.
Du erzeugst ein Document und ein RichtextItem und schreibst per Schleife alle Dokumente (evtl. Autoren oder Interest Profile aussortieren) als Doclink in das item.
Dieses Dokument wird mit einer zu erstellenden Maske im Workspace geöffnet.
Problem wird sein, das das Doc meines Wissens gespeichert werden muss bevor man es anzeigen kann, da sonst der Inhalt des RTItems nicht sichtbar ist. D.h.: per periodischem Agenten regelmässig ein Cleanup durchführen und ganz wichtig: sicherstellen das diese Docs nicht in den Ansichten auftauchen.
Zweite Methode wäre die von Bernhard(koehlerbv) vorgeschlagene Aktion die Dokumente in einen private Folder zu verschieben, dann muss man aber den Folder erst leeren, bevor man neue Docs reinschiebt.
Sinn des Newsletters ist es täglich eine e-mail mit den Neuigkeiten zu erhalten ohne di DB zu öffnen,
da ich dort, sofern sie nicht abgeschaltet wurden, durch die unread Markierungen sehe was neu oder verändert ist.
Wenn Deine SW-Discussion eine ähnliche ist wie die, an der ich schon einmal herumgedoktort habe, würde ich folgendes tun:

Die Newsletter werden für die Personen erzeugt, die ein Interest Profile erstellt haben,
d.h.: ich habe einen Benutzernamen gegen den ich abgleichen kann.
Die Rollen in der ACL kann man mit:
Public Function GetPersonsACLRoles(sname As NotesName)
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim uroles
   Dim ret() As String
   Dim count As Integer
   
   Redim ret(0 To 0) As String
   ret (0) = ""
   count = 0
   
   Set db = s.CurrentDatabase
   uroles = db.QueryAccessRoles(Cstr(sname.Canonical))
   If Isarray(uroles) Then
      If "" <> uroles(0) Then
         uroles = Arrayunique(uroles)
         Forall x In uroles
            If "[WE_" <> Left$(Cstr(x), 4) Then
               Redim Preserve ret(0 To count) As String
               ret(count) = Cstr(x)
               count = count + 1
            End If
         End Forall
      End If
   Else
      If "" <> uroles Then
         ret(0) = uroles
      End If
   End If
   GetPersonsACLRoles = ret
End Function
auslesen.

Die Gruppen in dem Leserfeld mit:
Private Function SolveGroupDomino(groupname As String)
   Dim ret
   Dim s As New NotesSession
   Dim dt As New NotesDateTime("21.01.1971")
   Dim db As NotesDatabase
   Dim searchstring As String
   Dim dc As NotesDocumentCollection
   Dim person As NotesDocument
   
   ' db mit N&A belegen
   If db Is Nothing Then
      Redim ret(0 To 0)
      ret(0) = ""
      SolveGroupDomino = ret
      Exit Function
   End If
   searchstring = "Form = ""Group"" & @ismember("""+ groupname +""";ListName)"
   Set dc = db.Search(searchstring, dt, 0)
   Redim ret(0 To 0)
   ret(0) = ""
   If 0 <> dc.Count Then
      Set person = dc.GetFirstDocument
      ret = person.GetItemValue("Members")
   End If
   SolveGroupDomino = ret
End Function
auflösen. Bei mir war der Fall, dass die Gruppen nicht verschachtelt waren, wenn das der Fall ist muss man die Fkt. noch anpassen.
Den Newsletter Agenten anzupassen ist zwar etwas aufwendig, bietet den Anwendern aber einen gewissen Comfort.

Gruss
Andreas

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln