export_security_system()

Exportiert die auf Gruppenebene definierten Klauseln des Sicherheitssystems und die zugehörigen Rechte-Bitfelder. Liefert je Gruppe × Cabinet × Objekttyp einen Eintrag mit den gesetzten Hauptrechten, den Annotations-Rechten und den optional konfigurierten Klauseln.

Das Sicherheitssystem kennt zwei Mechanismen, die parallel wirken: Klauseln auf Gruppenebene (dieser Job) und ACL-Regeln auf Objektebene (dms.ReadSD).

1. Signatur

  • Sync

  • Async

ecm.security.export_security_system(group_ids: list[int] | None = None) -> ECMSecuritySystemExport
await ecm.security.export_security_system(group_ids: list[int] | None = None) -> ECMSecuritySystemExport

2. Parameter

Parameter Standard Beschreibung

group_ids

None

Liste numerischer Gruppen-IDs (siehe mng.GetGroupListid). None oder leere Liste exportieren alle Gruppen des Servers.

3. Rückgabewert

ECMSecuritySystemExport mit drei Feldern:

Feld Typ Beschreibung

timestamp

datetime

Server-seitiger Erstellzeitpunkt aus dem <AdmInfo timestamp>-Attribut.

group_clauses

list[ECMGroupClause]

Eine Liste der <GroupClause>-Einträge, einer pro (Gruppe × Cabinet × Objekttyp).

exported_groups

list[ECMExportedGroup]

Die im Export berücksichtigten Gruppen.

3.1. ECMGroupClause-Felder

Feld Typ Beschreibung

group_id

int

Numerische ID der Gruppe.

group_name

str

Name der Gruppe.

cabinet_id

int

Numerische ID des Cabinets.

cabinet_name

str

Anzeigename des Cabinets.

object_type_id

int

Numerische ID des Objekttyps. Auflösung über dms.GetObjDef bzw. ecm.system.definition().

object_type_name

str

Anzeigename des Objekttyps.

rights

ECMObjectRight

Bitfeld der gesetzten Hauptrechte.

annotations

ECMAnnotationRight

Bitfeld der gesetzten Annotations-Rechte.

delete_clause

str

Klausel für D (Objekt löschen). Leerer String, wenn keine Klausel konfiguriert.

write_clause

str

Klausel für W (Indexdaten schreiben).

obread_clause

str

Klausel für X (Objekt ausgeben).

obwrite_clause

str

Klausel für U (Objekt schreiben).

hlp_clause

str

Klausel für R (Indexdaten anzeigen) — historisch „Hilfsrecht".

str_clause

str

Legacy-Attribut, immer leer; kann ignoriert werden.

3.2. ECMObjectRight (Flag-Enum)

Flag Wert Bedeutung

X

0x01

Objekt ausgeben

D

0x02

Objekt löschen

W

0x04

Indexdaten schreiben

R

0x08

Indexdaten anzeigen — Voraussetzung für jedes andere Recht

U

0x10

Objekt schreiben — setzt zusätzlich X voraus

3.3. ECMAnnotationRight (Flag-Enum)

Flag Wert Bedeutung

G

0x01

Anmerkungen sehen / bearbeiten

P

0x02

PDF-/Druck-Annotationen

Annotations-Rechte sind reine Bitmask-Marker und tragen keine Klauseln.

4. Beispiele

4.1. Alle Gruppen exportieren

  • Sync

  • Async

export = ecm.security.export_security_system()
print(export.timestamp)
for grp in export.exported_groups:
    print(grp.id, grp.name)
export = await ecm.security.export_security_system()

4.2. Konfigurierte Lösch-Klauseln pro Gruppe finden

export = ecm.security.export_security_system()
for clause in export.group_clauses:
    if clause.delete_clause:
        print(f"{clause.group_name} / {clause.object_type_name}: {clause.delete_clause}")

4.3. Filterung auf einzelne Gruppen

export = ecm.security.export_security_system(group_ids=[100, 200])

4.4. Auswertung der Rechte als Flag-Set

from ecmind_blue_client.ecm import ECMObjectRight

export = ecm.security.export_security_system()
for clause in export.group_clauses:
    if ECMObjectRight.D in clause.rights and clause.delete_clause:
        # Gruppe darf löschen, aber nur wenn die Klausel zutrifft.
        print(clause.group_name, clause.object_type_name, clause.delete_clause)

5. Klausel-Sprache

Die *_clause-Strings sind die rohen Server-Klauseln. Wichtigste Regeln:

  • Klauseln beginnen mit dem Syntax-Versions-Prefix BCCF.

  • Feldreferenzen greifen auf die DB-Spalten des Objekts zu (feldN, zahlN, realN, datumN). Auflösung auf interne Feldnamen via ecm.system.definition().

  • sys'<name>' referenziert Basisparameter (z.B. sys’modifyuser').

  • folder( <ausdruck> ) wertet den eingeklammerten Ausdruck im Kontext des umschließenden Ordners aus. Auf Ordner-Objekttypen nicht zulässig.

  • Operatoren: =, !=, >, <, >=, , in, not in, between, not between, and, or.

  • Variablen: DATE, DATETIME, TIME, USER, GROUPS, RIGHTGROUP, COMPUTERNAME, COMPUTERGUID, COMPUTERIP.

6. Siehe auch

  • groups() — liefert die Gruppen mit ihren id-Feldern für group_ids

  • group() — Detail-Attribute einer einzelnen Gruppe

  • ecm.system.definition() — Auflösung von cabinet_id, object_type_id und DB-Spalten auf Anzeigenamen / interne Namen