Autor Thema: Send Newsletters Agent aus Discussion DB soll Leserfelder berücksichtigen  (Gelesen 1418 mal)

Offline daija

  • Aktives Mitglied
  • ***
  • Beiträge: 104
  • Geschlecht: Männlich
  • The Second Place is the first loser
Hallo,

ich habe die Discussion DB in der Maske MainTopic um Leser und Autorenfelder erweitert.
Hat sich schon mal jemand mit dem Agent auseinander gesetzt und kann mir sagen, was ich anpassen muss, damit der Agent nicht die Dokumente in der Zusammenfassung auflistet, auf die der User keinen Lesezugriff hat?

Hintergrund: Auf die DB haben mehrere User Zugriff und jeder kann sich in seinem Interessenprofil über bestimmte Dokumente benachrichtigen lassen. In der Zusammenfassungs-Mail an den User sollen aber nicht die Dokumente auftauchen, auf die er keinen Zugriff hat, da sonst ein kl. privacy Problem entsteht und der User z.b. das Thema lesen kann.
Zufriedenheit ist Stillstand und Stillstand ist Rückschritt

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Wenn der Newsletteragent als lokaler periodischer AGent vom Benutzer gestartet wird, ist das alles keine Frage, da er im Userkontext abläuft und nur die Dokumente sammelt, die der Benutzer auch sehen kann, wenn du ein UNPROCESSEDFTSEARCH verwendest. (schau dir dazu das Beispiel der Hilfe zu Examples: FormatMsgWithDoclinks method an). Der Wesentliche Teil ist die Zweistufigkeit des Prozesses. Die Suche nach den UNPROCESSEDDOCUMENTS muß die Leserfelder nämlich berücksichtigen.

Testen.
Situs vilate in isse tabernit.

Offline daija

  • Aktives Mitglied
  • ***
  • Beiträge: 104
  • Geschlecht: Männlich
  • The Second Place is the first loser
Danke für deinen Beitrag.

Blöde Frage; aber wie konfiguriere ich den Agent, dass er als lokaler periodischer Agent vom Benutzer gestartet wird?
Ich habe alle Design-Elemente mit der Server-ID signiert und der Agent versendet nun mit dem Servernamen als Absender, d.h. der Server führt den Agent aus.
Zufriedenheit ist Stillstand und Stillstand ist Rückschritt

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Da ich unter "Newsletter-Agent" eine zentrale Instanz verstehe, die Mails für viele User automatisch und periodisch erstellt, würde ich sagen, dass eine Umstellung auf ein Prinzip "Mach's Dir doch selber" wenig zielführend ist.
In diesem Fall bleibt Dir aber nur:
Ermittele beim Versand der Newsletter jeweils die Rechte der (einzelnen!) Empfänger aus Deinem Leserfeld - wenn dort Gruppen oder gar verschachtelte Gruppen möglich sind, dann wird dies eine spannende, aber lösbare Programmieraufgabe.

Bevor ich jetzt weiter nachdenke (mir würde da als simple Lösung auch ein (oder mehrere) Ordner mit den Dokumenten für den Newsletter einfallen - da sieht ja auch jeder nur die Dokumente, für die er autorisiert ist), sag bitte an, wie Du zu der Problematik "scheduled agent vs. private agent" stehst. Wie gesagt, macht meiner Meinung nach Variante zwei kaum Sinn - DAS könntge man dann ja ganz anders lösen.

Bernhard

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Ich habe keineswegs gemeint, daß ich ein "Do-it-yourself"-Verfahren für besonders sinnvoll halte. Ich glaube eigentlich sogar, daß ein "verbogenes Diskussionsforum", in dem die Angeschriebenen nicht einmal das Subject bestimmter Artikel lesen können dürfen sollen, kein sinnvolles Instrument für die Verteilung von Newslettern ist.

Für die "spannende, aber lösbare" Aufgabe der (rekursiven) Namensauflösung aller Lesereinträge einmal die Fälle, die dabei zu berücksichtigen sind:

Albert Einstein/Firma/DE
Gruppe im Betrieb
*/Teilbetrieb/Firma/DE
[Entscheider]

Und wenn die Firma groß genug ist, kommt man bei der Auflösung bei großen Gruppen auch über die 64kB-Begrenzung eines Einzelfelds hinaus. Und noch ein kleiner Hinweis beim Herangehen an diese Aufgabe:
für die Gruppenfelder muß man sich merken, welche Gruppen man bereits untersucht hat, sonst fällt eine zyklische Gruppenstruktur auf die Nase.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline daija

  • Aktives Mitglied
  • ***
  • Beiträge: 104
  • Geschlecht: Männlich
  • The Second Place is the first loser
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?
Zufriedenheit ist Stillstand und Stillstand ist Rückschritt

Offline outerspace

  • Frischling
  • *
  • Beiträge: 39
  • Geschlecht: Männlich
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz