definition()
Gibt die vollständige Objektdefinition des verbundenen ECM-Servers als typisiertes
ECMDefinition-Objekt zurück. Die Definition wird einmalig über dms.GetObjDef abgerufen
und dann auf dem ecm.system-Namespace gecacht. Folgeaufrufe liefern dieselbe Instanz zurück.
1. Signatur
-
Sync
-
Async
ecm.system.definition(*, force_reload: bool = False) -> ECMDefinition
await ecm.system.definition(*, force_reload: bool = False) -> ECMDefinition
2. Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
|
|
|
Wenn |
3. Rückgabewert
Eine ECMDefinition-Instanz. Das gesamte Parsen findet direkt beim Konstruieren statt.
3.1. ECMDefinition
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
|
|
Die primäre Systemsprache. |
|
|
Alle aktiven Sprachen, nach ISO-Locale-Code indexiert (z. B. |
|
|
Alle Sprachen, nach ISO-Locale-Code indexiert, inkl. inaktiver. |
|
|
Alle Cabinet-Definitionen, nach internem Namen indexiert. |
|
|
Zeitstempel, wann die Definition auf dem Server erzeugt wurde. |
|
|
Server-Versionsstring (z. B. |
|
|
|
|
|
Suche über alle Cabinets nach internem Namen. Wirft |
|
|
Suche nach zusammengesetzter Typ-ID ( |
3.2. ECMLanguageDefinition
| Feld | Typ | Beschreibung |
|---|---|---|
|
|
Numerische Sprach-ID, die durchgehend im Definition-XML verwendet wird. |
|
|
Lesbarer Sprachname (z. B. |
|
|
ISO-Locale-Code (z. B. |
|
|
|
|
|
|
3.3. ECMCabinetDefinition
| Eigenschaft / Methode | Typ | Beschreibung |
|---|---|---|
|
|
Interner Name des Cabinets. |
|
|
Anzeigename des Cabinets. |
|
|
Numerische Cabinet-Typ-ID. |
|
|
Alle Objekttypen in diesem Cabinet, nach internem Namen indexiert. |
|
|
Gefilterte Ansicht — nur Ordnertypen. |
|
|
Gefilterte Ansicht — nur Registertypen. |
|
|
Gefilterte Ansicht — nur Dokumenttypen. |
|
|
Direktzugriff über internen Namen. Wirft |
|
|
Mitgliedschaftstest über internen Namen. |
3.4. ECMObjectDefinition
Gemeinsame Basis für ECMFolderDefinition, ECMRegisterDefinition und ECMDocumentDefinition.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
|
|
Interner (programmatischer) Name des Objekttyps. |
|
|
Haupttyp-Enum-Member (z. B. |
|
|
Numerische Objekttyp-ID. |
|
|
Zusammengesetzte Typ-ID: |
|
|
Server-seitiger GUID für diesen Objekttyp. |
|
|
Primärer Datenbanktabellenname. |
|
|
Beschriftung für die Primärsprache oder |
|
|
Sprachspezifische Beschriftungen, nach ISO-Locale-Code indexiert. |
|
|
Nur Top-Level-Felder. Felder in PageControl-Seiten sind nicht enthalten. |
|
|
Alle Felder, rekursiv über alle PageControl-Seiten hinweg abgeflacht. |
|
|
Kurzform für |
|
|
Volltext-Indexierungsmodus: |
|
|
Entschlüsselte History-Flags (Index-History, Dokument-History, Versionen). |
|
|
Dateikomprimierungsmodus: |
|
|
Erlaubte untergeordnete Objekttypen und ihre maximale Anzahl. |
ECMDocumentDefinition ergänzt ein zusätzliches Feld:
| Feld | Typ | Beschreibung |
|---|---|---|
|
|
|
3.4.1. Enum ECMMainType
| Member | Beschreibung |
|---|---|
|
Ordnertyp. |
|
Registertyp. |
|
Graustufen-Bilddokument. |
|
Schwarz-Weiß-Bilddokument. |
|
Farbiges Bilddokument. |
|
Windows-Anwendungsdokument. |
|
Multimedia-Dokument. |
|
E-Mail-Dokument. |
|
XML-Dokument. |
|
Container-Dokument. |
3.5. ECMDescriptionEntry
Enthält die sprachspezifische Beschriftung eines Objekttyps, Feldes oder Tabs.
| Feld | Typ | Beschreibung |
|---|---|---|
|
|
Anzeigename. |
|
|
Tooltip-Text in der Oberfläche. |
|
|
Icon-Bezeichner. |
|
|
URL für die Standardansicht. |
|
|
URL beim Anlegen eines neuen Objekts. |
|
|
URL beim Aktualisieren eines Objekts. |
|
|
URL für Checkout / Anforderung. |
|
|
URL für die Nur-Lesen-Ansicht. |
3.6. ECMFieldDefinition
Repräsentiert ein einzelnes Feld eines Objekttyps.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
|
|
Interner (programmatischer) Name des Feldes. |
|
|
Datenbankspaltename (z. B. |
|
|
Logischer Datentyp. |
|
|
UI-Steuerelementtyp (Textfeld, Checkbox, Tabelle, PageControl usw.). |
|
|
Katalogtyp oder |
|
|
Beschriftung für die Primärsprache. |
|
|
Beschriftungen für alle Sprachen, nach ISO-Locale-Code indexiert. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Maximale Eingabelänge oder |
|
|
Validierungs-Regex, leer wenn keiner konfiguriert. |
|
|
Standardwert-Ausdruck, leer wenn keiner konfiguriert. |
|
|
|
|
|
Tabs eines PageControl-Feldes ( |
|
|
Spaltendefinitionen eines TableFields ( |
|
|
In der Definition eingebettete Katalogwerte oder |
3.6.1. Enum ECMFieldDataType
| Member | Beschreibung |
|---|---|
|
Textfeld ( |
|
Ganzzahliges Feld. |
|
Boolean / Checkbox-Feld. |
|
Dezimalzahlenfeld. |
|
Datumsfeld. |
|
Zeitfeld. |
|
Kombiniertes Datum-Uhrzeit-Feld. |
3.6.2. Enum ECMControlType
| Member | Beschreibung |
|---|---|
|
Standard-Text-, Datum- oder Zahleneingabe. |
|
Mehrzeiliges Tabellen-/Rastersteuerelement. |
|
Optionsschaltfläche. |
|
Kontrollkästchen. |
|
Bildsteuerelement. |
|
Gruppenrahmen (nur visuelle Gruppierung, keine Datenbankspalte). |
|
Tab-/Seitensteuerung (enthält |
|
Eingebettetes Websteuerelement. |
|
Schaltfläche. |
|
Statisches Label (keine Datenbankspalte). |
3.7. ECMPageDefinition
Repräsentiert einen einzelnen Tab innerhalb eines PageControl-Feldes.
| Feld | Typ | Beschreibung |
|---|---|---|
|
|
Interner Name des Tabs. |
|
|
Nullbasierte Anzeigeposition innerhalb des PageControls. |
|
|
Beschriftung für die Primärsprache oder |
|
|
Beschriftungen für alle Sprachen, nach ISO-Locale-Code indexiert. |
|
|
Felder auf diesem Tab, nach internem Namen indexiert. |
3.8. ECMTableColumnDefinition
Repräsentiert eine einzelne Spalte eines TableFields.
| Feld | Typ | Beschreibung |
|---|---|---|
|
|
Interner Name der Spalte. |
|
|
Datenbankspaltename. |
|
|
Logischer Datentyp der Spalte. |
|
|
|
|
|
Nullbasierte Anzeigeposition im Raster. |
|
|
Anzeigebreite in Rastereinheiten ( |
|
|
Beschriftung für die Primärsprache. |
|
|
Beschriftungen für alle Sprachen, nach ISO-Locale-Code indexiert. |
4. Beispiele
4.1. Primärsprache und Server-Version lesen
-
Sync
-
Async
definition = ecm.system.definition()
print(definition.version) # z. B. "5.20"
print(definition.primary_language.iso_code) # z. B. "de_DE"
print(definition.created)
definition = await ecm.system.definition()
print(definition.version)
print(definition.primary_language.iso_code)
print(definition.created)
4.2. Alle Objekttypen aller Cabinets auflisten
-
Sync
-
Async
definition = ecm.system.definition()
for cabinet in definition.cabinets.values():
print(f"Cabinet: {cabinet.name}")
for folder in cabinet.folders.values():
label = folder.description.name if folder.description else folder.internal_name
print(f" Ordner: {folder.internal_name} ({label})")
for doc in cabinet.documents.values():
label = doc.description.name if doc.description else doc.internal_name
print(f" Dokument: {doc.internal_name} ({label})")
definition = await ecm.system.definition()
for cabinet in definition.cabinets.values():
print(f"Cabinet: {cabinet.name}")
for folder in cabinet.folders.values():
label = folder.description.name if folder.description else folder.internal_name
print(f" Ordner: {folder.internal_name} ({label})")
for doc in cabinet.documents.values():
label = doc.description.name if doc.description else doc.internal_name
print(f" Dokument: {doc.internal_name} ({label})")
4.3. Felder eines Objekttyps untersuchen
-
Sync
-
Async
definition = ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.is_static:
continue
print(
field.internal_name,
field.data_type,
"Pflicht" if field.required else "",
"Nur-Lesen" if field.readonly else "",
)
definition = await ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.is_static:
continue
print(
field.internal_name,
field.data_type,
"Pflicht" if field.required else "",
"Nur-Lesen" if field.readonly else "",
)
4.4. Felder mit Katalogwerten auslesen
-
Sync
-
Async
definition = ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.catalog is None:
continue
print(f"{field.internal_name}: Katalog={field.catalog}")
if field.list_values:
for row in field.list_values.rows:
print(f" [{row.index}] {row.value}")
definition = await ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.catalog is None:
continue
print(f"{field.internal_name}: Katalog={field.catalog}")
if field.list_values:
for row in field.list_values.rows:
print(f" [{row.index}] {row.value}")
4.5. PageControl-Tabs und ihre Felder untersuchen
-
Sync
-
Async
definition = ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.fields.values():
if field.control.value != "page_control":
continue
for page in field.pages.values():
label = page.description.name if page.description else page.internal_name
print(f"Tab: {label}")
for page_field in page.fields.values():
if not page_field.is_static:
print(f" {page_field.internal_name} ({page_field.data_type})")
definition = await ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.fields.values():
if field.control.value != "page_control":
continue
for page in field.pages.values():
label = page.description.name if page.description else page.internal_name
print(f"Tab: {label}")
for page_field in page.fields.values():
if not page_field.is_static:
print(f" {page_field.internal_name} ({page_field.data_type})")
4.6. Tabellenspalten eines TableFields untersuchen
-
Sync
-
Async
definition = ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.control.value != "tablefield":
continue
print(f"Tabelle: {field.internal_name}")
for col in field.columns.values():
print(f" {col.internal_name} ({col.data_type})")
definition = await ecm.system.definition()
obj = definition["RechnungsOrdner"]
for field in obj.all_fields.values():
if field.control.value != "tablefield":
continue
print(f"Tabelle: {field.internal_name}")
for col in field.columns.values():
print(f" {col.internal_name} ({col.data_type})")
5. Siehe auch
-
ecm.system — Namespace-Übersicht