Hallo,
erstmal danke für die zahlreichen Antworten.
@koehlerbv: Der Agent wird mit Agent.RunOnServer gestartet und ich hatte ihn auf "Aus der Liste der Agenten". Ich hab das jetzt umgestellt auf "periodisch - nie". Die anderen Änderunge hab ich auch eingearbeitet und die ganze Sache läuft perfekt. Hier nochmal der Code des Agenten zur Info:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim ag As Notesagent
Dim doc As NotesDocument
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = s.CurrentDatabase
Set ag = s.CurrentAgent
Set doc = db.GetDocumentByID(ag.ParameterDocID)
Set acl = db.ACL
Set entry = acl.GetEntry( doc.GetItemValue("Pruefer_Name")(0))
If (entry Is Nothing) Then
Call db.GrantAccess( doc.GetItemValue("Pruefer_Name") (0), ACLLEVEL_EDITOR)
Set entry = acl.GetEntry( doc.GetItemValue("Pruefer_Name")(0))
End If
Call entry.DisableRole("QMB")
Call entry.DisableRole("QUM-Koordinator")
Call entry.DisableRole("QM-Bearbeiter")
If Not (entry Is Nothing) Then
entry.UserType = ACLTYPE_PERSON
Call entry.EnableRole( doc.GetItemValue("Pruefer_Typ")(0))
If (doc.GetItemValue("Pruefer_Typ")(0) = "QMB") Or (entry.Level = ACLLEVEL_MANAGER) Then
entry.CanDeleteDocuments = True
Else
entry.CanDeleteDocuments = False
End If
Call acl.Save()
End If
End Sub
@knoedel0815: Es werden ca. 20 - 25 Einträge, von daher sollte das doch eigentlich kein Problem geben.
Die ganze Berechtigungsgeschichte ist natürlich zu hinterfragen und ist sicher nur ein Ansatz von vielen. Auch hab ich hier das Problem, "Was tun wen ich einen Eintrag löschen will?". Wobei ich das auch bei den anderen Ansätzen sehe, es sei denn ich baue die Zugriffslisten im Adressbuch periodisch wieder auf oder der entsprechende Agent wird PostDocumentDelete gestartet. Damit wiederum hab ich so gar keine Erfahrung und vor keinen Ansatz wie ich an die Dokumente komme. Bestimmt über ne DocumentCollection, oder? Wie auch immer, wenn ich die Listen neu aufbaue kann ich das genauso gut mit der ACL machen. Mein Ansatz da ist im Moment, dass ich die ACL durchgehe, schaue ob ein entsprechendes Dokument vorhanden ist (oder es eine Servergruppe ist) und den Eintrag gegebenen Falls lösche. Ich kann auch erstmal alle Einträge der ACL (bis auf die Server) löschen und dann die Ansicht durchgehen und entsprechend neue Einträge anlegen.
Soweit meine Überlegungen zu dem Thema. Ich denke beide Ansätze (ACL und Adressbuchlisten) unterscheiden sich im Aufwand kaum voneinander. Bei der ACL-Geschichte muß ich nur die eine DB anpacken, aber diesen Vorteil, wenn es denn überhaupt einer ist, kann man wohl vernachlässigen. Ich muß auchzugeben, dass mich das Ganze irgendwie reitzt und ich das einfach mal gemacht haben möchte.
Ok, ich gespannt auf eure Kommentare.
Gruß,
Helge