Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Silver am 30.08.04 - 16:24:05
-
Hallo!
Ich habe 2 Fragen:
1. Kann ich über eine Maske Personen im Zugriff für meine Datenbank einstellen/berechtigen und diesen dann noch eine bestehende Rolle zuweisen?
2. Habe ich die Möglichkeit, ein Auswahlfeld zu erstellen, dass mir die Personen einer Rolle zur Auswahl bringt? Also z. B. soll eine Person aus der Personalabteilung (Rolle "Perso") über dieses Feld eine andere Person auswählen können, die ebenso in Rolle "Perso" ist.
Hoffe das ist einigermassen verständlich ausgedrückt... ansonsten versuche ich es noch einmal besser zu formulieren.
-
Mit LotusScript kann man sowas machen, allerdings setzt das dann auch das (möglichst sofortige) Rückschreiben der Informationen in die ACL voraus.
Bernhard
-
Sorry... aber ich finde in der Hilfe nichts, das mir weiterhelfen könnte. Kann mir das jemand kurz mal näher bringen - evlt. mit Beispielcode o. ä.??? Wäre suppi!!!
-
Hallo Silver,
schau Dir mal die NotesACL und die NotesACLEntry Klassen an. Da gibts auch Beispiele.
Gruß
Spalter ;)
-
Hallo Silver,
wie verwaltest Du die ACL. Personen alle einzelnen darin? Der Pflegeaufwand geht gegen unendlich.
Tipp.
Lege zu jeder Rolle eine Gruppe an, in der Du die Personen im N&A pflegst. Wenn Du die Gruppen so benennst, das der Rollenname mit vorkommt, kannst Du die Gruppen (ohne ACL Zugriffe ) aus dem N&A mit allen enthaltenen Mitarbeitern rausholen und anzeigen.
Gruß von Ekki
-
OK ich seh schon... das ist leider zu hoch für mich :'(. Werde das dann immer über die ACL der DB pflegen. Aber ich hab da gleich wieder ne Frage. An die Personen, die einer Rolle zugeordnet sind muss eine Mail geschickt werden.
Habe ich eine Möglichkeit über eine Maske o. ä. an die Personen einer Rolle zu senden? ???
-
Hallo Silver,
Rollen sind nix fürs Mailing. Das mußt Du mit Gruppen im Adreßbuch regeln.
Gruß
Spalter ;)
-
An "Rollen mailen" ist an sich relativ einfach, indem man alle NotesACLEntries in einer Schleife durchläuft und NotesACLEntry.Name in das Empfänger-Array übernimmt, wenn in NotesACLEntry.Roles die gesuchte Rolle enthalten ist.
Bernhard
-
Hallo Bernhard,
geht natürlich, aber Rollen an sich benutze ich erher zur Steuerung von Anwendungen. Der Admin legt die Gruppen so fest, daß es paßt und ich diesen Umweg nicht gehen muß. Das geht ja dann auch nur in Script.
Gruß
Spalter
-
Das ist schon vollkommen klar, Spalter.
Gerade in Workflow-Anwendungen kann es aber durchaus Sinn machen, Personen mit einer bestimmten Rolle per Mail eine Benachrichtigung zukommen zu lassen. Da verbindet man das Angenehme mit dem Nützlichen - und erspart sich eine Menge Arbeit.
Bernhard
-
Ich habe jetzt folgende Formel um die Personen, die der Rolle "GL-MAR" zugeornet sind, in einem Feld anzuzeigen.
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim roleName As String
Dim foundRole As Variant
Set uidoc = workspace.CurrentDocument
Set db = session.CurrentDatabase
Set acl = db.ACL
' add brackets to role
roleName = "[GL-MAR]"
foundRole = False
' check to see if the role exists in the database
Forall r In acl.Roles
If ( r = roleName ) Then
foundRole = True
Exit Forall
End If
End Forall
If ( foundRole = False ) Then
Messagebox _
( "Sorry, " & roleName & " is not a role" )
' if the role exists, check each acl entry to see if role
' is enabled for entry
' if so, add entry name to the People field
' on the current document,
' followed by a semicolon, the multi-value separator
Else
Set entry = acl.GetFirstEntry
While Not ( entry Is Nothing )
If ( entry.IsRoleEnabled( roleName ) = True ) Then
Call uidoc.FieldAppendText _
( "People", entry.Name & ";" )
End If
Set entry = acl.GetNextEntry( entry )
Wend
End If
' refresh current document so People field displays nicely
Call uidoc.Refresh
Allerdings bekomme ich beim Öffnen der Maske die Fehlermeldung, dass im Bearbeitungsmodus geöffnet sein muss. Habe aber bei der Maske angegeben, dass das Dok. immer bearbeitbar geöffnet werden soll. Was muss ich noch umstellen?
-
Wo hast Du denn den Code zu stehen ?
-
Hallo Silver,
das fehlt hier noch:
uidoc.EditMode = True
Gruß
Spalter ;)