Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: s.berger am 02.12.09 - 12:40:20
-
Hallo liebes Forum,
ich bin leider nicht in der Forensuche fündig geworden. Darum meine Frage:
Wie kann ich bestimmte Namen aus einer ACL abfragen, die eine von mir gegebene Rolle haben? Hintergrund ist, dass ich an die User mit dieser Rolle eine automatische E-Mail schicken will. Kann mir jemand hierzu helfen? :-:
Vielen Dank im voraus.
-
Hallo,
Die Klassen NotesACL und ACLEntry koennen hierbei sehr hilfreich sein.
Ich geben jedoch noch zu bedenken.
Was machst Du mit Gruppen die in der ACL stehen und die von Dir gesuchte Rolle haben bzw. Gruppen, die diese Rolle haben, jedoch keine Personengruppen (z.B. Servergruppen) sind.
Andreas
-
Die beiden LS Klassen habe ich mir schon angeschaut, nur fehlt mir offenbar der richtige Denkansatz.
stringArray = notesACL.Roles
notesACL.GetEntry( name$ )
und
stringArray = notesACLEntry.Roles
helfen mMn nicht, weil ich ja einen Namen zu einer gegebenen Rolle suche. Hat jemand einen Rat?
Danke!
-
Du durchsuchst jeden einzelnen ACLEntry und checkst in einer Schleife alle Rollen der Einträge.
Wenn die Rolle mit der von dir gesuchten übereinstimmt schreibst du den Namen in ein Array.
Das vergleichst du dann danach mit dem Directory und bekomms so die Mail Adresse
Chris
-
So ungefaehr.
- Schleife zum Durchlaufen aller Eintraege der ACL
- Eintrag in die Klasse ACLEntry setzen
- hier gibt es die Methode IsRoleEnabled("Name der Rolle")
Liefert diese ein True zurueck, so ist fuer diesen Eintrag in der ACL die gesuchte Rolle gesetzt.
Andreas
-
So ungefaehr.
- Schleife zum Durchlaufen aller Eintraege der ACL
- Eintrag in die Klasse ACLEntry setzen
- hier gibt es die Methode IsRoleEnabled("Name der Rolle")
Liefert diese ein True zurueck, so ist fuer diesen Eintrag in der ACL die gesuchte Rolle gesetzt.
Andreas
Hallo,
Danke für die Tipps. So sieht mein fertiges script zum versenden der E-Mail aus:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc, docmail As NotesDocument
Dim nam As NotesName
Dim namen As String
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim rtitem As NotesRichTextItem
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set acl = db.ACL
Set entry = acl.GetFirstEntry
While Not (entry Is Nothing)
If entry.IsRoleEnabled("myrole") Then
Set nam = New NotesName(entry.Name)
namen = nam.Common & "@mydomain"
Set docmail = New NotesDocument(db)
docmail.Form = "Memo"
docmail.SendTo = namen
docmail.Subject = "Approved"
Set rtitem = New NotesRichTextItem( docmail, "Body")
Call rtitem.AppendDocLink(doc,"link to your doc")
Call rtitem.AddNewline(1)
Call rtitem.AppendText("link to your doc")
Call docmail.Send( False )
End If
Set entry = acl.GetNextEntry(entry)
Wend
Call uidoc.Refresh
End Sub
-
Hallo,
Auf den ersten Blick sieht es gut aus.
Nur kommen wir nun zu dem Thema Gruppen.
Was wuerde Dein Script tun, wenn es sich bei dem Eintrag aus der ACL um eine Gruppe handelt?
Und noch schoener, was passiert, wenn es sich bei der Gruppe um eine Gruppe vom Typ
"Nur Zugriffskontrollliste" handelt.
(an Gruppen diesen Typs koennen ja bekannlichermassen keine Mails versendet werden.
Andreas
-
Die Gruppe tut doch nicht weh, Andreas - dann geht die Mail an die Gruppe. Wenn die Gruppe natürlich nicht für das Mailen geeignet ist, dann geht das in die Hose. Ergo wäre nicht der Code schlecht, sondern die ACL: Wenn die Anwendung Mails an bestimmte ACL-Einträge senden kann / soll, dann darf man dafür auch keine nur-ACL-Einträge verwenden.
Bernhard
-
@Bernhard
Prinzipiell gebe ich Dir recht.
Nur, eventuell auch schon aus eigener Erfahrung, bei mir zumindest schon aufgetreten, kommt der Wunsch nach dem Senden der Mail an bestimmte Personen/Gruppen in der ACL er im Nachhinein.
Und da sind die Gruppen schon definiert und eingetragen und auch wie nicht anders zu Erwarten weiss neimend mehr so genau darueber bescheid.
Andreas
-
Da sind wir dann beim Henne-Ei-Problem: Die ACL ist nicht korrekt bestimmt bzw. nicht bestimmungsgemäss aufgebaut. Wie reagieren? Der ErrorHandler, der das Problem beim Mailing an ACL-only-Groups verkündet, ist natürlich selbstverständlich. Nur: Ist da eventuell das Kind schon in den Brunnen gefallen? Sollte eventuell erst gemailt werden und im Fehlerfall eine weitere Aktion dann abgebrochen werden? Oder muss man gar vor jedem Mailing den Gegencheck im Domino Directory machen? Braucht der arme überforderte Admin vielleicht einen "Application Health Check" Button?
Ich habe mir einen Otto-Motor in mein Auto einbauen lassen. Auf eigenen Wunsch. Wer ist dafür verantwortlich, was mit dem schwarzen Schlauch in das Loch hinten im Auto eingespritzt wird, damit der Motor nicht kurz nach dem Starten verröchelt? Der Auto-Hersteller? Bestimmt nicht ;)
Bernhard