Das Notes Forum

Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: eknori am 21.02.02 - 10:40:08

Titel: Gruppendokumente anhand von Zugriffsebene erzeugen
Beitrag von: eknori am 21.02.02 - 10:40:08
Hallo zusammen,

Ich stehe vor dem Problem einige bestehende Datenbanken zu überarbeiten.
Meinem Vorgänger kam es leider nicht in den Sinn, die ACL der Datenbanken dergestalt zu pflegen, daß der Zugriff über Gruppen gesteuert wird.
So habe ich also eine fast endlose Liste von Personeneinträgen. :P
Ich suche eine Möglichkeit, gruppen automatisch anhand der Zugriffsebene zu erzeugen, also alle Editoren in eine Gruppe etc.
Hat irgend jemand so etwas griffbereit. Bin heute ein wenig faul und habe überhaupt keine Lust, so ein Tool zu programmieren.  ;D

eknori

Titel: Re: Gruppendokumente anhand von Zugriffsebene erze
Beitrag von: eknori am 21.02.02 - 11:38:08
OK, habe meine Faulheit überwunden und schnell einen Agenten gestrickt. hier das Ergebnis

Sub Initialize
     Dim s As New NotesSession    
     Dim db As NotesDatabase    
     Dim acl As NotesAcl
     Dim aclEntry As NotesAclEntry
     Dim view As NotesView    
     Dim doc As NotesDocument
     Dim item As NotesItem
     Dim userName As NotesName
     Dim ZE (0 To 6) As String
     Set db = s.CurrentDatabase
     Set acl = db.ACL
     
     ZE(0) = "NoAccess"
     ZE(6) = "Manager"
     ZE(5) = "Entwickler"
     ZE(4) = "Editor"
     ZE(3) = "Autor"
     ZE(2) = "Leser"
     ZE(1) = "Archivar"
     
     For i% = 0 To 6
           Set doc = db.CreateDocument
           Set item = doc.AppendItemValue ("Form", "Group")
           Set item = doc.AppendItemValue ("Type", "Group")            
           Set item = doc.AppendItemValue ("ListName", ZE(i%))
           Set item = doc.AppendItemValue ("Members", "")
           item.IsNames = True
           
           Set aclEntry = acl.GetFirstEntry          
           
           Do Until (aclEntry Is Nothing)
                 
                 If aclEntry.Level = i% Then
                       Set userName = New NotesName (aclEntry.Name)
                       Call item.AppendToTextList (userName.Abbreviated)                    
                 End If
                 
                 Set aclEntry = acl.GetNextEntry (aclEntry)
           Loop            
           
           Call doc.Save (True, True)
     Next
     
End Sub


in die betreffende Datenbank habe ich aus dem NAB die Ansicht "gruppen" und die Maske "Gruppe" kopiert.
Dann den Agenten Starten und die erzeugten gruppen entsprechend umbenennen und ins NAB kopieren.


;D ;D ;D