mng.ExportSecuritySystem
Dieser Job exportiert die auf Gruppenebene definierten Klauseln des Sicherheitssystems für eine Auswahl von Benutzergruppen oder für alle Gruppen. Geliefert wird je Gruppe × Cabinet × Objekttyp ein Eintrag mit den gesetzten Hauptrechten, den Annotations-Rechten und den optional konfigurierten Klauseln.
Das Sicherheitssystem kennt zwei Mechanismen: Klauseln auf Gruppenebene (dieser Job) und ACL-Regeln auf Objektebene (siehe dms.ReadSD).
1. Eingabeparameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
|
INT |
Ja |
Reserviert. Stets |
|
STRING |
Ja |
Komma-getrennte Liste numerischer Gruppen-IDs (siehe |
3. Ausgabedateien
| Name | Beschreibung |
|---|---|
|
Pfad und Name der UTF-8-kodierten XML-Exportdatei. Der Dateiname folgt dem Schema |
4. XML-Struktur
<AdmInfo timestamp="JJJJ-MM-DDTHH:MM:SS">
<GroupClauses>
<GroupClause … /> <!-- 1 Eintrag pro (Gruppe × Cabinet × Objekttyp) -->
…
</GroupClauses>
<ExportedGroups>
<ExportedGroup groupid="…" groupname="…"/>
…
</ExportedGroups>
</AdmInfo>
<AdmInfo> enthält genau zwei Kindelemente: die Liste der Klausel-Einträge <GroupClauses> und die Liste der im Export berücksichtigten Gruppen <ExportedGroups>.
4.1. <GroupClause>-Attribute
| Attribut | Typ | Beschreibung |
|---|---|---|
|
INT |
Numerische ID der Gruppe. |
|
STRING |
Name der Gruppe. |
|
INT |
Numerische ID des Cabinets. |
|
STRING |
Anzeigename des Cabinets. |
|
INT |
Numerische ID des Objekttyps (Cabinet-Folder, Folder, Register, Subregister oder Document). Aufbau und Berechnung: Objekttyp-ID. |
|
STRING |
Anzeigename des Objekttyps. |
|
INT |
Bitfeld der gesetzten Hauptrechte — siehe |
|
INT |
Bitfeld der gesetzten Annotations-Rechte — siehe |
|
STRING |
Klausel für das Recht D (Objekt löschen). |
|
STRING |
Klausel für das Recht W (Indexdaten schreiben). |
|
STRING |
Klausel für das Recht X (Objekt ausgeben). |
|
STRING |
Klausel für das Recht U (Objekt schreiben). |
|
STRING |
Klausel für das Recht R (Indexdaten anzeigen). Der historische Name „Hilfsrecht" stammt aus älteren enaio®-Versionen, in denen die Indexdaten-Anzeige als Voraussetzungs-Recht aller weiteren Aktionen modelliert war. |
|
STRING |
Legacy-Attribut ohne aktiv genutztes Recht; im Export immer leer und kann ignoriert werden. |
Alle Klausel-Attribute sind optional. Wenn keine Klausel konfiguriert ist, liefert der Server den leeren String. Klauseln existieren ausschließlich für die fünf Hauptrechte; die Annotations-Rechte (G, P) sind reine Bitmask-Marker ohne zugeordnete Klausel.
5. Rechte-Bitfelder
5.1. rights — die fünf Hauptrechte
Jede Gruppe × Objekttyp-Kombination kann fünf Rechte tragen, abgebildet als Bitfeld in rights:
| Bit | Wert | Recht | Beschreibung |
|---|---|---|---|
0 |
|
X |
Objekt ausgeben (öffnen, drucken, exportieren). |
1 |
|
D |
Objekt löschen. |
2 |
|
W |
Indexdaten schreiben. |
3 |
|
R |
Indexdaten anzeigen. |
4 |
|
U |
Objekt schreiben (anlegen / ändern). |
0x1F (31) = R+W+D+X+U (alle fünf Rechte gesetzt).
6. Klausel-Sprache
Die Strings in den *_clause-Attributen sind die rohen Klauseln, also direkt das, was die enaio®-Server-Auswertung liest. Sie weichen von der Editor-UI-Form ab.
6.1. Syntax-Versions-Prefix BCCF
Jede Klausel beginnt mit dem Prefix BCCF. Er gibt an, in welcher Klausel-Sprachversion der nachfolgende Ausdruck zu lesen ist. Andere Prefixe sind in der aktuellen API-Version nicht definiert.
6.2. Feldreferenzen
| Notation | Bedeutung |
|---|---|
Direktzugriff auf eine Datenbank-Spalte des aktuellen Objekts (typische enaio®-Spalten: |
|
|
Auch zulässig — der Parser akzeptiert die nackte Spaltenform. |
|
Basisparameter-Felder (z. B. |
DB-Spalten-Namensschema:
| Spalte | Datentyp | Beispiel-Feldtyp |
|---|---|---|
|
STRING |
Textfeld, Auswahlliste, Katalogeintrag |
|
INT / BOOLEAN / TIME |
Zahl, Checkbox, Radiobutton, Zeit, Datums-/Zeitstempel |
|
DOUBLE |
Dezimalzahl |
|
DATE |
Datumsfeld |
Im Editor sieht der Anwender die Form [Anzeigename] oder {InternerName}; der Export liefert die zugrundeliegenden DB-Spaltennamen. Die Auflösung von cabinetid, objecttypeid und der DB-Spalten auf den internen Feldnamen oder Anzeigenamen erfolgt über die Objektdefinition aus dms.GetObjDef. Basisparameter wie sys’modifyuser' oder sys’created' sind nicht in der per-Objekttyp-Feldliste enthalten und müssen separat als feste Liste der dokumentierten Basisparameter erkannt werden.
6.3. Funktion folder( <ausdruck> )
folder(…) verschiebt den Auswertungskontext: der eingeklammerte Teilausdruck wird gegen den umschließenden Ordner des aktuellen Objekts ausgewertet. Damit kann eine Klausel auf einem Dokument oder Register Bedingungen am Eltern-Ordner prüfen.
Folge: Ordner-Objekttypen (Cabinet-Folder, Folder) können selbst kein folder(…) enthalten — sie haben keinen umschließenden Ordner. Solche Klauseln sind nur auf Register, Subregister und Documents sinnvoll.
6.5. Laufzeit-Variablen
| Variable | Bedeutung |
|---|---|
|
Heutiges Datum |
|
Aktueller Zeitpunkt |
|
Aktuelle Uhrzeit |
|
Angemeldeter Benutzer |
|
Gruppen des angemeldeten Benutzers |
|
Aktive Rechtegruppe |
|
Name des Client-Rechners |
|
GUID des Client-Rechners |
|
IP-Adresse des Client-Rechners |
7. Beispiele
7.1. Komplette Marker-Konfiguration auf einem Register-Typ
Eine Klausel der Form = '<Buchstabe>' für jedes Hauptrecht zeigt das Mapping „Klausel-Attribut → Rechteart" exemplarisch:
<GroupClause groupid="100" groupname="Sachbearbeiter"
cabinetid="42" cabinetname="Akten"
objecttypeid="6488065" objecttypename="Akten Register"
rights="31" annotations="0"
delete_clause="#BCCF#[[feld1]] = 'D'"
write_clause="#BCCF#[[feld1]] = 'W'"
obread_clause="#BCCF#[[feld1]] = 'X'"
obwrite_clause="#BCCF#[[feld1]] = 'U'"
hlp_clause="#BCCF#[[feld1]] = 'R'"
str_clause=""/>
7.2. Cabinet-weite Sichtbarkeitsregel über System-Feld
<GroupClause groupid="100" groupname="Sachbearbeiter"
cabinetid="42" cabinetname="Akten"
objecttypeid="42" objecttypename="Akten"
rights="31" annotations="0"
delete_clause="" write_clause=""
obread_clause="" obwrite_clause=""
hlp_clause="#BCCF#sys'modifyuser' = 'MUSTERMANN'"
str_clause=""/>
Der Eintrag definiert auf dem Cabinet-Folder die R-Klausel: nur Objekte, deren Modifier MUSTERMANN ist, sind für die Gruppe Sachbearbeiter lesbar.
7.3. Eltern-Ordner-Bedingung auf einem Document
<GroupClause groupid="100" groupname="Sachbearbeiter"
cabinetid="42" cabinetname="Akten"
objecttypeid="262144" objecttypename="Akten Document"
rights="11" annotations="2"
delete_clause="#BCCF#folder ( [[zahl1]] = 12341)"
hlp_clause="#BCCF#[[zahl4]] = 1 and datum1 = #DATE# and [[real1]] =3.14"
write_clause="" obread_clause="" obwrite_clause="" str_clause=""/>
rights="11" = R+D+X gesetzt; annotations="2" = nur P. Die D-Klausel prüft eine Spalte am Eltern-Ordner, die R-Klausel kombiniert drei Bedingungen am Document selbst.
9. Siehe auch
-
mng.GetGroupList — liefert die numerischen IDs für
GroupIDs -
mng.GetGroupAttributes — Detail-Attribute einer Gruppe
-
dms.GetObjDef — Auflösung von
cabinetid,objecttypeidund DB-Spalten -
dms.ReadSD — ACL-Mechanismus des Sicherheitssystems auf Objektebene