Die Datenbank-Konfiguration wurde in die Database-Sektion verschoben.
Allgemein
Die Komponenten wurden aktualisiert.
Features
Der Service kann neu mit Etcd konfiguriert werden.
Für den Designer werden neu Content-Security-Policy (CSP) Header ausgeliefert.
Fehlerkorrekturen
Die, bei der Reporterstellung verwendete Culture, kann nun in der Konfiguration bestimmt werden. Default: de-CH. Siehe auch Culture
Nach dem Service-Start ging das Beziehen der zur Verfügung stehenden Reports länger als gewünscht. Grund war ein zu frühes Laden von Daten, die zu diesem Zeitpunkt noch nicht notwendig waren. Dies wurde korrigiert.
Bei CMI Server Versionen < 23.3 konnten Globale und Persönliche Reports nicht mehr editiert werden. Dies wurde korrigiert.
Version 2.5.*
Breaking Changes
In Scripts muss neu auch bei Assocs der Typ spezifiziert werden, auch wenn nur eine TypDefinition unterstützt wird. Beispiel: kontakt.Adressen -> kontakt.Adressen_Adresse. Dies ist nötig, damit Scripts nicht brechen, wenn sich das Modell in Zukunft verändert.
Allgemein
Die Komponenten wurden aktualisiert.
Features
Es wurde ein neues Hauptverzeichnis mit den Ordnern "Standard", "Global" und "Persönlich" eingeführt. Die bisher im Hauptverzeichnis angelegten Ordner und Reports sind im Ordner "Global" zu finden. Der bisher speziell behandelte Ordner "CMI Standard" wird als normaler Ordner behandelt.
Der Pfad unter welchem das generierte Model für die CodeCompletion abgelegt wird kann konfiguriert werden. Siehe ModelOptions und ModelOptions.
Verwendete Felder werden aus Scripts herausgelesen. Erfolgreich herausgelesene Felder müssen nicht mehr als unsichtbare Felder auf den Report gezeichnet werden.
Die Anmeldesitzung kann neu automatisch verlängert werden. Es sind Konfigurationsänderungen notwendig, um diese Funktion nutzen zu können. Siehe OpenIdConnectConfig.
Auf allen Objekten stehen unter "Misc" nun die Eigenschaften "DisplayName" und "TypeName" zur Verfügung.
Mit dem Menü "Reports prüfen" können einzelne Reports oder ganze Strukturen geprüft werden ob die Reports gültig sind. Folgende Prüfungen werden ausgeführt:
Scripts werden kompiliert
Alle Bindings werden geprüft
Ein ApiClient steht für c# Projekte im Form eines NuGet Pakets zur Verfügung.
Einführung API-Version 3
Die Eigenschaft "Filter String" war nicht nutzbar und wurde daher ausgeblendet.
Die Maximale Grösse des Http-Request-Bodys kann nun konfiguriert werden. Siehe MaxRequestSize und MaxRequestSize.
Für gewisse gecachte Daten kann neu Redis verwendet werden. Siehe Caching.
Ab CMI Server 25.3 Für das Editieren/Anlegen von Reports wird immer die Lizenz "REPORT" benötigt. Für das Editieren von globalen Reports wird zusätzlich das Recht "Globale Vorlagen und Reports verwalten" benötigt. Für persönliche Reports wird zusätzlich das Recht "Basis" benötigt.
API v3
Der Endpunkt /[tenant]/api/v3/ReportParameters kann zusätzlich mit den ReportParametern "Datum ( ohne Uhrzeit )" und "Zeit" umgehen.
Der Endpunkt /[tenant]/api/v3/ReportsWithStructure gibt eine neue Struktur zurück, die Standard-, Globale und persönliche Reports beinhaltet.
Fehlerkorrekturen
Die Eigenschaft 'Bild URL' auf einem Bild-Element und die Eigenschaft 'Source URL' auf einem PDF-Element waren wegen einem Fehler sichtbar und wurden wieder ausgeblendet.
Werden die neuen typisierten Typen im Scripting verwendet, so werfen diese keine KeyNotFoundExceptions mehr, wenn Daten nicht vorhanden sind.
Das Icon im Menü links war manchmal ein Ordner statt einem Report. Das wurde korrigiert.
Version 2.4.*
Allgemein
Die Dokumentation wurde ergänzt um die Konfiguration im CMI Server.
Die Komponenten wurden aktualisiert.
TypDefinitions-Keys dürfen beim Einsatz einer SQLServer-Datebank nicht mehr als 450 Zeichen lang sein.
Beim Scripting steht nun eine bessere CodeCompletion zur Verfügung. Hierfür kann beispielsweise die aktuelle Zeile mittels GetCurrentRow().GetTypedRow<T>() typisiert werden. Für T stehen dabei die Schlüssel der TypDefinitionen zur Verfügung. Wird das typisierte Objekt danach verwendet so werden die entsprechenden Properties automatisch vorgeschlagen. Pro Mandant dauert die erste Ausführung eines Reports oder des Designers etwa 20 Sekunden länger.
Um die CodeCompletion zu verwenden, muss das folgende using-Statement hinzugefügt werden: using CMI.Reporting.Service.Public;
Features
Neu sind gleichnamige Reports erlaubt, solange diese für unterschiedliche TypDefinitionen erstellt werden.
Gibt es Migrationen der Datenbank so werden diese beim Servicestart automatisch angewendet. Dies ist das neue Standardverhalten. Siehe auch InstanceMode.
Im Designer können neu Barcodes hinzugefügt werden.
Im Designer können neu Charts hinzugefügt werden. Die Datenbefüllung wird zurzeit aber nur via Script unterstützt.
Verbessertes Logging für besseres Troubleshooting
Sinnvolle Fehlermeldungen für fehlerhafte ReportAnfragen.
Beim Export werden die Reports flachgedrückt direkt im zip abgelegt. Zusätzlich wird im zip-File ein metadata.json mit den Struktur-Informationen der Reports erstellt.
Der Import unterstützt sowohl bestehende als auch neue Exports.
Neu sind auch gleichnamige Ordner wie Reports erlaubt.
Bei Konflikten beim Import von Reports wird nicht nur der Name des Reports angezeigt sondern auch noch die TypDefinition.
Fehlerkorrekturen
Problem behoben, bei dem in Dropdowns nach dem Filtern und Herunterscrollen keine Werte mehr ausgewählt werden konnten.
Problem im Loading-Spinner-Component behoben, der bei einigen API-Calls nicht angezeigt wurde.
Schreibfehler in einer URL korrigiert, der verhindert hat, dass geänderte Renderer-Einstellungen vom Reporting-Service bemerkt werden.
Kann ein Report wegen Fehlern nicht gerendert werden, wird auf API-Ebene ein Fehler zurückgegeben statt so zu tun, als hätte es funktioniert.
Das mit Version 2.1 erhöhte Limit ging verloren und wurde wieder eingeführt.
Version 2.3.*
Features
Der CMI Reporting Service bietet einen neuen Endpunkt unter '/[tenant]/api/VersionDiscovery' an, um die unterstützten API-Versionen abzufragen
Reports für mehrere Objekte werden in der Reihenfolge der Objekte ausgegeben wie diese übergeben werden.
Bei Feldern des Typs "Dokument" gibt es nun ein Feld pro Renderer. Das originale Feld " (Data)" gibt es nach wie vor. Dieses gibt die originale Rendition zurück. Funktioniert erst ab R25.2. Vorher steht die entsprechende Option nicht zur Verwendung.
Einführung API-Version 2
Bei Report-Parametern kann neu ein Standardwert hinterlegt werden. Bisher war das Feld versteckt, d.h. jeder Report hatte bereits einen Standardwert, nun ist er aber konfigurierbar. Bei String-Parametern können mehrere Werte hinterlegt und als Enum genutzt werden.
Bei Report-Parametern kann neu ein NULL-Wert zugelassen werden.
API v2
Der Endpunkt /[tenant]/api/v2/ReportParameters liefert im Vergleich zu v1 ein DefaultValuesAsString-Property. In der Regel hat dieses Array nur einen Eintrag. Wenn ein Parameter als Enum genutzt wird, sind mehrere Werte enthalten. Es liegt am Konsumenten, einen Wert beim Endpunkt /[tenant]/api/v2/RenderedReport mitzuschicken.
Der Endpunkt /[tenant]/api/v2/ReportParameters liefert im Vergleich zu v1 ein AllowNull-Property. Es liegt am Konsumenten zu entscheiden, wann beim Endpunkt /[tenant]/api/v2/RenderedReport statt einem echten Wert NULL als Wert gesendet wird, bspw. ob statt 0 fachlich eher NULL richtig ist. Ein fehlender übermittelter Wert und ein explizit mit NULL übermittelter Wert werden gleich behandelt.
Technisches
Abhängigkeiten wurden auf die neusten Versionen aktualisiert
Version 2.2.*
Fehlerkorrekturen
Gewisse Scripts funktionierten mit >= 2.0 nicht mehr, da Datumsfelder als String behandelt wurden. Dies wurde korrigiert.
Technisches
Integrationstests ergänzt
Version 2.1.*
Fehlerkorrekturen
Die Dateien im Release-Paket wurden nicht mit der deklarierten Version markiert, was korrigiert wurde.
Der Standardpfad für den automatisch gestarteten Prozess für die externe Reporterstellung enthielt einen Windows-Pfad-Delimiter, was unter Linux zu Problemen geführt hat. Der Delimiter wurde entfernt, da er nicht notwendig war.
Nach dem Start des automatisch gestarteten Prozesses wird neu eine kurze Zeit gewartet, damit dieser genug Zeit hat, sich zu initialisieren.
Das Limit für die Tiefe an abgefragten Daten war zu niedrig eingestellt. Es wurde um ca. 50% erhöht.
Die konfigurierten Schriftarten wurden nicht mehr beachtet bei der Reporterstellung. Dies wurde korrigiert.
Version 2.0.*
Breaking Changes
Die Objekte in der Datenstruktur, die in der Funktion "TryGetDataSource" zurückgegeben werden, sind nicht mehr stark typisiert vom Typ "IDictionary" sondern vom Typ "object". Dieser Breaking Change ist ein Artefakt von der Umstellung zur externen Reporterstellung. Wir gehen davon aus, dass dies niemanden betrifft. Die Verwendung von "TryGetDataSource" Kombination mit "dynamic" sollte von diesem Breaking Change nicht betroffen sein.
Features
Die Generierung der Reports wird in einen eigenen Prozess oder ausgelagerten Dienst ausgelagert. Somit können Sicherheitslücken durch Scripts verhindert werden.
Der automatisch gestartete Prozess zur Reporterstellung wird bei der Beendung des Dienstes ebenfalls beendet.
Fehlerkorrekturen
Reports, welche auf abstrakten Typen gestaltet wurden, funktionieren nun korrekt.
Version 1.2.*
Features
Der Designer berücksichtigt die eingestellte Sprache. Es kann allerdings Stellen geben, die nicht übersetzt sind.
Angular auf die Version 19 aktualisiert
Die Abhängigkeiten wurden auf die neusten Versionen aktualisiert
CSV wird standardmässig als UTF8-BOM generiert
Fehlerkorrekturen
Service startet auch bei fehlerhafter Mandantenkonfiguration
Gleichzeitige Reportausführung wieder ermöglicht
Falsch-Interpretation bei null-Werten in GraphQL-Resultat korrigiert
Der Dateiname vom Endpunkt RenderedReport wird anhand des angegebenen Reports und Rendertyps bestimmt
Für die Sortierung verwendete Felder müssen nicht mehr im Report dargestellt werden
Version 1.1.*
Features
Angular auf die Version 18 aktualisiert
ContentProvider können in Reports verwendet werden (setzt 24.4 voraus)
Bilder eines Objekts können verwendet werden
Abhängigkeiten wurden auf die neusten Versionen aktualisiert