Gerne wollen wir euch informieren, dass wir die Version 1.0.0rc1 für eure Tests freigegeben haben. Wir würden uns sehr über Rückmeldungen wie Bug-Reports, Änderungswünsche und natürlich hauch Feature-Requests von euch freuen.
Installation
Um die neue Version zu verwenden, müsst ihr explizit die Pre-Release-Version anfordern:
## uv
# In ein Projekt aufnehmen (exakte Version)
uv add "ecmind_blue_client==1.0.0rc1"
# Pre-Releases generell erlauben und neuesten RC ziehen
uv add --prerelease=allow ecmind_blue_client
Kompatibilität
Die Version 1.0.0rc1 sollte vollständig mit der aktuellen 0.9.2 kompatibel sein. Wir empfehlen aber, schrittweise vom bisherigen TCPClient bzw. TCPPoolClient auf die neue ECM-Abstraktion zu wechseln.
Die Mindestanforderung an Python ist von 3.11 auf 3.12 angehoben worden.
Mit der Version 1.0.0 (aktuell Release Candidate 1.0.0rc1) erhält der ecmind_blue_client eine grundlegend erweiterte, moderne API. Die bisherige Low-Level-Schnittstelle bleibt erhalten - neu hinzugekommen ist eine vollständige, typsichere Abstraktionsschicht.
Zentrale Neuerungen
Neue High-Level-API ecm.* - eine moderne, typsichere Abstraktion über das enaio®-Protokoll, gegliedert in fachliche Namespaces: ecm.dms, ecm.system, ecm.security, ecm.db und ecm.workflow.
Synchron und asynchron - sämtliche Operationen stehen wahlweise als synchrone oder asynchrone Variante zur Verfügung (SyncPoolClient / AsyncPoolClient), inklusive Verbindungs-Pooling mit Statistiken.
Typisiertes Modell-System (ORM-ähnlich) - Ordner, Register und Dokumente lassen sich als typisierte Modellklassen anlegen, lesen, aktualisieren und löschen (insert / update / upsert), inkl. Pflichtfeld-Prüfung, Tabellenfeldern, schreibgeschützten Feldern und Dokumentvarianten.
DMS-Abfragen - komfortabler Query-Builder und -Parser für DMS-Suchen, kombinierte Abfragen, LOL-/HOL-Unterstützung sowie Volltextsuche direkt am typisierten Modell.
Workflow-Funktionen - Organisationen, Vertretungen und Abwesenheiten verwalten, Vorgangslisten je Benutzer abrufen sowie Workflows per API starten (start_process) inkl. typisierter Workflow-Variablen-Modelle.
Weitere Operationen - Dokument-Historie, Check-out/Check-in, Berechtigungsprüfung, Lizenz- und Modulinformationen, Benutzer-/Gruppen-/Rollenverwaltung, Export des Sicherheitssystems und freie SQL-Ausführung.
Code-Generatoren - ecm-generate-models erzeugt typisierte Modellklassen aus der enaio®-Objektdefinition; ecm-generate-workflow-models erzeugt typisierte Workflow-Variablen-Modelle.
Wir haben gerade die Version 1.0.0rc2 hinzugefügt.
Änderungen
Explizite Funktion replace_table_fields() für die Methoden ecm.dms.update und ecm.dms.upsert um die Option REPLACE_TABLE_FIELDS explizit setzen zu können.
in der Methode ecm.dms.upsert Tag Reihenfolge im XML der Tags <Fields> und <Search> explizit festgelegt, da Search niemals nach Fields kommen darf.
Unterstützung von PageControls ohne interne Namen. In diesem Fall werden nun die page_ids (GUID des PageControls) verwendet.
Installation
Um die neue Version zu verwenden, müsst ihr explizit die Pre-Release-Version anfordern:
Wir haben gerade die Version 1.0.0rc3 hinzugefügt.
Änderungen
ecm.dms.search unterstützt nun auch die Suche anhand der Tabellen Felder. Optional mit Zeilenbezug.
Enum Felder sind jetzt in Where Clauses angenehmer zu verwenden. Bisher musste jeweils MeinFeld == MeinEnum.Wert1.value geschrieben werden. Nun ist auch einfach MeinFeld == MeinEnum.Wert1 möglich.
Einige Bugfixes in der Generierung von Workflow Modellen sind nun behoben
Zwei neue Release Candidates der 1.0.0-Reihe (für RC4 gab es hier noch keinen Eintrag). Die öffentliche API bleibt gegenüber 1.0.0rc3 unverändert, abgesehen von den neuen Funktionen unten.
Änderungen
1.0.0rc4
Neu: Model.system.<Feld> auf Klassenebene als abfragbares Feld, z. B. select(Doc).where(Folder.system.id == folder.system.id).
Neu: Gruppenverwaltung auf ecm.security: create_group(), update_group(), delete_group(), empty_group().
Fix: Lizenz-Jobs (check_license(), module_info()) funktionieren wieder auf enaio 12+; ein unbekanntes Modul liefert sauber ECMNotFoundException.
Fix (#15434): Felder lassen sich per update() wieder leeren. Ein auf None gesetztes Feld wird jetzt als field_function="NULL" an den Server gesendet.
Fix (#15431): ecm.db.select() brach bei führendem Zeilenumbruch im SQL mit IndexError ab; das Statement wird nun links getrimmt.
1.0.0rc5
Fix: ecm-generate-models ließ datentragende Felder mit GROUP-Control aus (z. B. PostDoc: hash, group, user). Diese werden jetzt als ECMField erzeugt; rein visuelle Gruppen bleiben ausgeschlossen. Modelldateien bitte neu generieren.
Installation
pip:
# A) genaue Version
pip install -U ecmind_blue_client==1.0.0rc5
# B) neueste Version inkl. Pre-Releases
pip install -U --pre ecmind_blue_client
uv:
# A) genaue Version
uv add ecmind_blue_client==1.0.0rc5
# B) Pre-Releases erlauben
uv add --prerelease=allow ecmind_blue_client