get()

Lädt ein einzelnes Objekt vom Server anhand seiner ID und gibt es als typisierte Modell-Instanz zurück. Wirft ECMNotFoundException, wenn kein Objekt mit der angegebenen ID existiert.

ECM-Modell-Referenz — vollständige Beschreibung aller system-Eigenschaften (system.id, system.rights, system.base_params, system.file_properties usw.) und der Änderungsverfolgung.

Intern stehen zwei Abrufmodi zur Verfügung, die sich in Funktionsumfang und Performance unterscheiden — siehe [_abrufmodi].

1. Signatur

  • Sync

  • Async

ecm.dms.get(
    model_class: type[T],
    object_id: int,
    object_type_id: int | None = None,
    *,
    rights: bool = False,
    base_params: bool = False,
    file_properties: bool = False,
    variants: bool = False,
    use_result_list: bool = False,
    fields: list[str | ECMField] | None = None,
) -> T
await ecm.dms.get(
    model_class: type[T],
    object_id: int,
    object_type_id: int | None = None,
    *,
    rights: bool = False,
    base_params: bool = False,
    file_properties: bool = False,
    variants: bool = False,
    use_result_list: bool = False,
    fields: list[str | ECMField] | None = None,
) -> T

2. Parameter

Name Typ Beschreibung

model_class

type[T]

Die Modelklasse des gesuchten Objekts. Bestimmt den Objekttyp und die zurückgegebenen Felder.

object_id

int

Die numerische ID des gesuchten Objekts.

object_type_id

int | None

Optionale numerische Objekttyp-ID. Nur im Standard-Modus (use_result_list=False) ausgewertet; bei use_result_list=True ignoriert. Wird der Parameter weggelassen, ermittelt der Server den Typ automatisch.

rights

bool

Wenn True, werden die Zugriffsrechte des angemeldeten Benutzers abgerufen (befüllt obj.system.rights). Standard: False.

base_params

bool

Wenn True, werden Verwaltungsparameter abgerufen (befüllt obj.system.base_params): Ersteller, Erstelldatum, Eigentümer, letzter Änderer, Änderungsdatum. Standard: False.

file_properties

bool

Wenn True, werden Datei-Metadaten abgerufen (befüllt obj.system.file_properties). Nur für Dokument-Typen relevant. Standard: False.

variants

bool

Wenn True, werden W-Modul-Versionsverzweigungen abgerufen (befüllt obj.system.variants). In beiden Modi verfügbar. Standard: False.

use_result_list

bool

Schaltet den Abrufmodus um — siehe [_abrufmodi]. Standard: False.

fields

list[str | ECMField] | None

Schränkt die zurückgegebenen Felder ein. Nur bei use_result_list=True wirksam; bei use_result_list=False stillschweigend ignoriert. None gibt alle Felder zurück. Standard: None.

3. Rückgabewert

Eine typisierte Modell-Instanz des angeforderten Objekts.

4. Ausnahmen

ECMNotFoundException

Wird geworfen, wenn kein Objekt mit der angegebenen ID auf dem Server existiert.

5. Abrufmodi

get() unterstützt zwei interne Abrufmethoden, die sich in Umfang und Einschränkungen unterscheiden:

use_result_list=False (Standard) use_result_list=True

Server-Job

dms.GetObjectDetails

dms.GetResultList (HOL)

Performance

Schneller (direkter ID-Lookup)

Langsamer (Abfrage + Paging)

Dokument-Ortsfelder
(folder_id, register_id)

Nicht verfügbar

Verfügbar

variants

Verfügbar

Verfügbar

fields

Nicht verfügbar (ignoriert)

Verfügbar

Objekte ohne Ablageort
(kein Ordner/Register)

Abrufbar

Wirft ECMNotFoundException

use_result_list=True erfordert, dass das Objekt in der Ablagestruktur abgelegt ist (d.h. einem Ordner oder Register zugeordnet ist). Objekte ohne Ablageort können über GetResultList nicht gefunden werden.

6. Beispiele

6.1. Einfacher Abruf

  • Sync

  • Async

folder = ecm.dms.get(InvoiceFolder, 12345)
print(folder.Title, folder.Year)
folder = await ecm.dms.get(InvoiceFolder, 12345)
print(folder.Title, folder.Year)

6.2. Mit Fehlerbehandlung

  • Sync

  • Async

from ecmind_blue_client.ecm import ECMNotFoundException

try:
    folder = ecm.dms.get(InvoiceFolder, 12345)
    print(folder.Title)
except ECMNotFoundException:
    print("Objekt nicht gefunden")
from ecmind_blue_client.ecm import ECMNotFoundException

try:
    folder = await ecm.dms.get(InvoiceFolder, 12345)
    print(folder.Title)
except ECMNotFoundException:
    print("Objekt nicht gefunden")

6.3. Rechte und Verwaltungsparameter

  • Sync

  • Async

folder = ecm.dms.get(InvoiceFolder, 12345, rights=True, base_params=True)
print(folder.system.rights.edit_metadata)
print(folder.system.base_params.creator)
folder = await ecm.dms.get(InvoiceFolder, 12345, rights=True, base_params=True)
print(folder.system.rights.edit_metadata)
print(folder.system.base_params.creator)

6.4. Dokument mit Dateiinformationen und Varianten

  • Sync

  • Async

doc = ecm.dms.get(InvoiceDocument, 12345, file_properties=True, variants=True)
print(doc.system.file_properties.extension, doc.system.file_properties.size)
for v in doc.system.variants:
    print(v.doc_ver, "aktiv" if v.is_active else "")
doc = await ecm.dms.get(InvoiceDocument, 12345, file_properties=True, variants=True)
print(doc.system.file_properties.extension, doc.system.file_properties.size)
for v in doc.system.variants:
    print(v.doc_ver, "aktiv" if v.is_active else "")

6.5. Dokument-Ortsfelder abrufen (use_result_list)

folder_id und register_id sind nur mit use_result_list=True verfügbar:

  • Sync

  • Async

doc = ecm.dms.get(InvoiceDocument, 12345, use_result_list=True)
print(doc.system.folder_id)    # ID des übergeordneten Ordners
print(doc.system.register_id)  # ID des übergeordneten Registers
doc = await ecm.dms.get(InvoiceDocument, 12345, use_result_list=True)
print(doc.system.folder_id)
print(doc.system.register_id)

6.6. Nur bestimmte Felder laden (use_result_list + fields)

  • Sync

  • Async

folder = ecm.dms.get(
    InvoiceFolder, 12345,
    use_result_list=True,
    fields=[InvoiceFolder.Title, InvoiceFolder.Year],
)
print(folder.Title, folder.Year)
# folder.Status ist None (nicht angefordert)
folder = await ecm.dms.get(
    InvoiceFolder, 12345,
    use_result_list=True,
    fields=[InvoiceFolder.Title, InvoiceFolder.Year],
)
print(folder.Title, folder.Year)