EMCS v6.5

30. August 2017

 

Am 29. August 2017 wurde EMCS in der Version 6.5 freigegeben.

Die neue Version verwendet das EMCS Datenmodell in der Version 62.

Dies ist eine sehr umfangreiche Release. Zur Fertigstellung wurden insgesamt 3 Iterationen durchgeführt, im xS+S EMCS Quellcode-Verwaltungssystem wurden über 300 Commits durchgeführt, der Arbeitsaufwand war etwa ein halbes Mannjahr.

EMCS in der Version 6.5 erwartet am Server nun zwingend folgende Infrastruktur:

  • Java Runtime: Java 8
  • Application Server: Wildfly 10
  • Datenbank: PostgreSQL 9+

Mit v6.5 enthält EMCS im Quellcode nun erstmals mehr als eine Million Zeilen an Java Code (LOC). Insgesamt enthält der Quellcode von EMCS nun knapp 1,4 Millionen Codezeilen im verschiedenen Programmiersprachen.

Die Anzahl der Tabellen in der Datenbank hat sich von 197 (DB Modell v60 für EMCS v6.4) auf 372 (DB Modell v62 für EMCS v6.5) fast verdoppelt.

Folgende Funktionen sind in EMCS v6.5 neu:

Temporale Metadaten

"Temporale Metadaten" bedeutet, dass alle "Metadaten" (="Daten über Daten", d.h. Datensätze, die die eigentlichen Messwerte näher beschreiben, wie z.B. Messort, Parameter, Zeitreihe, Einheiten, etc.) "temporal" verwaltet werden, d.h. jede Änderung vom System in der Datenbank gespeichert wird. Der Administrator hat die Möglichkeit, auf diese "historischen Daten" zuzugreifen und sich so die Konfiguration des Systems in der Vergangenheit anzusehen. Messwerte werden mit dieser Erweiterung aus Performancegründen nicht "versioniert".

Änderungen werden in "Revisionen" verwaltet. Jede Änderung an den Metadaten erzeugt eine neue Revision, welche den Zustand des Systems zu diesem Zeitpunkt enthält. In jeder Revision ist also der gesamte Bestand an temporalen Daten inklusive aller Verweise zwischen den Datensätzen konsistent. Damit kann der Administrator im Admin UI revisionsweise in die Vergangenheit "navigieren", aber hier dann auch zwischen den einzelnen Datensätzen navigieren und den Verweisen zwischen den Datensätzen folgen.

Das Feature "temporale Metadaten" ist aus Sicht von EMCS optional und kann über ein Property aktiviert oder deaktiviert werden. Beim Aktivieren der "temporalen Metadaten" muss das Revisions-System mit den bestehenden Daten einmalig initialisiert werden. Für diese Initialisierung steht ein eigenes Script zur Verfügung, welches jederzeit aufgerufen werden kann.

Es gibt bei aktiven "temporalen Metadaten" daher immer eine Revision "1", welche den Datenbestand zum Zeitpunkt der Aktivierung widerspiegelt.

Neuer Menüpunkt Verwaltung->System->Revisionen

Hier kann man eine Liste aller bis dato vorhandenen Revisionen ansehen und Kommentare zu Revisionen vergeben, ändern oder löschen.

Der Administrator sieht in der Liste die Revisionsnummer, den Zeitpunkt der Revision, den Usernamen der Person, welche die Änderung durchgeführt hat, die Datentypen der dabei geänderten Datensätze, Verweise auf die geänderten Datensätze und (falls vergeben) den Kommentar zur Revision.

Falls möglich bietet die Liste auch direkte Links auf die in der jeweiligen Revision geänderten Datensätze. Damit kann der EMCS Administrator direkt zur Detailansicht dieses Datensatzes in der historischen Ansicht der jeweiligen Revision navigieren (Nicht möglich ist das für Datensätze, die gelöscht wurden)

Die sonst übliche "Detailansicht" im Admin UI gibt es bei Revisionen nicht, weil alle Informationen zur Revision direkt in der Übersichtstabelle untergebracht sind. Ein Revisions-Datensatz kann auch nicht geändert werden (Ausnahme: der Kommentar, der eingegeben und modifiziert werden kann, wenn man auf das kleine Bleistift-Icon klickt)

Admin UI Übersichtslisten

In den Übersichtslisten der temporalen Daten kann man nun optional auch die Version des Datensatzes als eigene Spalte ausgeben (Konfigurierbar über das kleine "Zahnrad" Icon über der Tabelle).

Anmerkung: Das Admin UI speichert derzeit nicht, welche Spalten der Anwender gewählt hat und verwirft die gewählte Einstellung, sobald der Anwender das Admin UI verlässt. Das betrifft nicht nur die Spalte "Version", sondern alle anderen optional darstellbaren Spalten (Abhängig vom Typ des Datensatzes). Eine diesbezügliche Erweiterung des Admin UI steht auf unserer Wunschliste der "allgemeinen UI Verbesserungen"

Historische Ansicht

In den Übersichtslisten kann man über das kleine Icon am rechten Rand die "Historische Ansicht" einschalten. Dabei wird ein gelber Balken eingeblendet, in dem man die wichtigsten Daten zur gerade angezeigten Revision sieht. Über die Navigationspfeile kann man durch die einzelnen Revisionen blättern und man kann direkt zu einer Revisionsnummer oder zu einem Zeitpunkt navigieren. Wenn man in den Revisionen navigiert, ändert sich die Darstellung in der Tabelle entsprechend (natürlich nur, falls sich zwischen den Revisionen etwas geändert hat, was anzuzeigen ist)

Über das "X" Icon in der rechten oberen Ecke des gelben Bereichs wird die historische Ansicht ausgeschaltet und man landet wieder in der "aktuellen Ansicht" Die "aktuelle Ansicht" zeigt den aktuell gültigen Zustand der Metadaten und ist immer aktiv, wenn man nicht bewusst die historische Ansicht eingeschaltet hat.

Admin UI Detailansicht

In der Detailansicht eines Datensatzes sieht man nun ebenfalls die Versionsnummer des Datensatzes (im Reiter "Eigenschaften"). Die Versionsnummer erhöht sich automatisch bei Änderungen am Datensatz und ist damit ein Indikator für die Anzahl der bisher vorgenommenen Änderungen.

Anmerkung: Die Versionsnummer ist eine Eigenschaft der Persistenzschicht (JPA) und gab es daher schon immer. Sie war als rein internes Attribut bisher für die Anwender nur nicht sichtbar. Mit der Einführung der temporalen Metadaten haben wir nun entschieden, dass die Ausgabe der Versionsnummer im Admin UI sinnvoll sein kann. Wenn bei einer EMCS Installation erst später die temporalen Metadaten aktiviert werden, gibt es daher natürlich Datensätze, die in der Vergangenheit bereits modifiziert wurden, wobei es für diese Änderungen aber keine Aufzeichnungen gibt. Es kann in diesem Fall daher Datensätze geben, wo die Versionsnummer nicht der Anzahl der in Revisionen gespeicherten Änderungen entspricht.

Weiters kann es Datensätze geben, wo sich die Versionsnummer bei Änderungen um mehr als 1 erhöht. Das sind Datensätze, welche Verweise auf andere Datensätze enthalten, die gemeinsam in einem Admin User Interface verwaltet werden und wo aus technischen Gründen beim Speichern innerhalb einer Revision mehrere Änderungen an den Datensätzen vorgenommen werden (Beispiel: Attribute). In diesen Fällen kann man von der Versionsnummer nur begrenzt auf die tatsächliche Anzahl der Revisionen schließen.

Versionsgeschichte

In der Detailansicht gibt es nun einen zusätzlichen Reiter "Versionsgeschichte" Hier gibt es eine Übersicht über alle Revisionen, an denen der gerade angezeigte Datensatz geändert wurde. Es gibt hier auch die Möglichkeit, in die historische Ansicht für eine bestimmte Revision zu wechseln (über das "Lupen" Icon) sowie einen Kommentar für eine bestimmte Revision zu vergeben (über das Bleistift-Icon)

Historische Ansicht

In der Detailansicht kann man ebenfalls die "Historische Ansicht" aktivieren. Entweder für eine bestimmte Revision über das Lupen-Icon einer Zeile der Versionsgeschichte, oder über das kleine Icon am rechten Rand. Dabei wird ebenfalls wieder ein gelber Bereich eingeblendet.

Im Unterschied zur historischen Ansicht in der Übersichtsliste kann man in der Detailansicht beim Navigieren durch die Revisionen die nicht relevanten Revisionen ausblenden. Das heißt, dass nur zu denjenigen Revisionen navigiert wird, zu denen sich der aktuell angezeigte Datensatz geändert hat.

Ist die historische Ansicht aktiv, kann man nicht in den Edit-Modus wechseln und den Datensatz auch nicht löschen! Man kann aber einen Datensatz aus der historischen Ansicht heraus kopieren, wobei der Zustand in der aktuell dargestellten Revision übernommen wird. Damit ist es möglich, aus einer alten Version heraus einen neuen Datensatz anzulegen.

Dashboard Gadget "Neueste Änderungen"

Es gibt nun auch ein neues Gadget für das Dashboard mit dem Namen "Neueste Änderungen". Damit kann man sich am Dashboard Infos zu den aktuellsten n Änderungen ausgeben. Das Gadget bietet auch die Möglichkeit, direkt zur historischen Ansicht eines geänderten Datensatzes zu navigieren (sofern das möglich ist)