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