Release ECMind blue Studio 1.0.3

Titel: ECMind blue Studio 1.0.3


Das ECMind blue Studio ist in Version 1.0.3 auf PyPI.org erschienen:

ECMind blue Studio auf pypi.org

Seit dem Überblick zum Release 1.0.0 sind 1.0.1 und 1.0.2 als Wartungsreleases erschienen. 1.0.3 bringt zwei neue Schalter für upsert: insertonly und keepfiles. Die übrigen Änderungen seit 1.0.0 stehen am Ende.

pip install --upgrade ecmind-blue-studio

upsert

upsert sucht das Objekt über die search-Felder, wie im Beitrag Schreiben und Importieren im Detail beschrieben. Ohne Treffer wird das Objekt angelegt. Bei einem Treffer wird es mit den Werten aus set aktualisiert. Mehrere Treffer sind ein Fehler.

Die beiden neuen Schalter sind für Datenvorbereitungen, die mehrfach laufen, wenn ein Update nicht benötigt wird: insertonly lässt das gefundene Objekt ganz in Ruhe, keepfiles nur seine Datei.

insertonly

insertonly lässt ein gefundenes Objekt unverändert. Es werden weder Indexdaten noch Dateien geschrieben. Ohne Treffer wird das Objekt wie gewohnt angelegt. Technisch ist das dms.XMLImport mit Action1 = NONE, also ein einziger Aufruf.

upsert folder Customer
  set CompanyName = 'Alpenblick Treuhand AG', CustomerNo = 'K-10042'
  search CustomerNo
  insertonly as kunde;

upsert register Correspondence into @kunde
  set Subject = 'Rechnungen 2026'
  search Subject
  insertonly as reg

Der Server antwortet auch bei einem Treffer mit der ID des gefundenen Objekts. as bindet sie, into @kunde funktioniert also in beiden Fällen. @kunde.action ist insert oder none. Eine einzelne Anweisung meldet „Kunde 5693 existiert bereits und blieb, wie es war.“, im Batch steht none als Marke.

Mehrere Treffer bleiben ein Fehler, weil der Suchschlüssel dann nicht eindeutig ist.

keepfiles

keepfiles aktualisiert die Indexdaten eines gefundenen Dokuments und lässt seine Datei unverändert. Die Datei aus der file-Klausel geht nur an ein neues Dokument.

upsert document Invoice into @reg
  set InvoiceNo = #FILEBASE#, 
      Amount = 2480.75
  search InvoiceNo
  file 'R-2026-1063.pdf' keepfiles as beleg

dms.XMLImport hat dafür keine Option, denn REPLACEFILES wählt nur zwischen Ersetzen und Anhängen. Das Studio macht deshalb zwei Aufrufe:

  • Der erste schickt die Datei mit Action1 = NONE. Ohne Treffer entsteht das Dokument samt Datei in einem Job. Ein Treffer bleibt unverändert.
  • Nur nach einem Treffer folgt der zweite mit derselben Suche und denselben Indexdaten, aber ohne Datei und ohne REPLACEFILES, mit Action0 = ERROR und Action1 = UPDATE.

Wurde das Dokument zwischen den beiden Aufrufen gelöscht, schlägt die Anweisung wegen Action0 = ERROR fehl. Es entsteht also kein Dokument ohne Datei. Die Datei wird bei jedem Lauf übertragen, auch wenn sie nicht gebraucht wird. .action meldet update, das Ergebnis zusätzlich, dass die Datei erhalten blieb.

Hier der Batch aus dem letzten Beitrag, ein zweites Mal ausgeführt. Ordner und Register mit insertonly ergeben none, die Rechnung mit keepfiles ergibt update mit erhaltener Datei:

Wichtig: keepfiles schützt nur die Datei. Die Indexdaten eines gefundenen Dokuments werden überschrieben. Also wie immer erst mit select prüfen, was die search-Felder finden.

Beide Schalter lassen sich mit nomandatory und as kombinieren. keepfiles geht auch mit replacetables oder appendtables, die dann für den zweiten Aufruf gelten.

Prüfung im Editor

Der Editor prüft die Schalter, bevor etwas zum Server geht:

  • Q3135: insertonly oder keepfiles auf insert oder update
  • Q3136: keepfiles, replacetables oder appendtables neben insertonly, weil ein gefundenes Objekt dort nicht geschrieben wird
  • Q3137: keepfiles ohne file-Klausel, weil ein upsert ohne Datei die Dateien ohnehin nicht anfasst

Die Vervollständigung bietet insertonly nach search an und keepfiles erst nach einer file-Klausel.

Weitere Änderungen seit 1.0.0

  • Die Objektdefinition steht allen angemeldeten Benutzern offen. Mit der Systemrolle „DMS: Supervisor“ oder „Editor: Starten“ ist sie vollständig, sonst auf die sichtbaren Schränke und Typen gefiltert. Der Download der asobjdef.xml läuft mit den Rechten des Benutzers.
  • Die Vervollständigung bietet keine Objekttypen mehr an, die der Benutzer nicht sehen darf. Ein von Hand geschriebener Typ bekommt weiterhin die Warnung.
  • Die Tabs werden pro Anmeldung gespeichert und nicht mehr pro Browser.
  • Mit ecmind-blue-client 1.0.2 wirkt EBS_RESPONSE_SPILL_MB. Antworten bis 32 MiB (Voreinstellung) bleiben im Speicher und gehen nicht schon ab 3,2 MiB in eine Datei.
  • select user zeigt locked = true für Benutzer, die nach Fehlanmeldungen gesperrt sind. Ein update user ohne locked lässt den Sperrgrund des Servers stehen.
  • Ab 1.0.2 ist die Abhängigkeit ecmind-blue-client>=1.0.2 statt ==1.0.2.

Weiterhin viel Spass mit dem ECMind blue Studio und meldet Euch gerne, wenn ich etwas ergänzen oder erklären darf.