EMCS v8.0.1

31. Mai 2022

 

Am 31. Mai 2022 wurde EMCS in der Version 8.0.1 freigegeben.

Die neue Release verwendet das EMCS Datenmodell in der Version 70.

 

Wesentliche Neuerungen in dieser Release:

Unterstützung von Java 17 und JEE 8

EMCS ist nun bezüglich Laufzeitumgebung, JEE Standards und der intern verwendeten Bibliotheken auf ganz aktuellem Stand und damit bereit für die kommenden Jahre!

Ab dieser Release verwendet EMCS bevorzugt nun eine Java 17 LTS Laufzeitumgebung. Das ist die aktuelle Java LTS (Long Time Support) Version. Der Betrieb mit einer Java 11 LTS Laufzeitumgebung ist ebenfalls möglich.

Weiters unterstützt EMCS nun die Java Enterprise Spezifikation in der Version 8 (JEE8). Als Standard Application Server setzt EMCS nun Wildfly in der Version 26.1.1-Final ein.

Auch für EMCS Remote Clients ist nun Java in der Version 17 die bevorzugte Laufzeitumgebung. EMCS Groovy Clients benötigen nun Groovy in der Version 3.0.10 oder neuer sowie eine passene Java 11 oder 17 Laufzeitumgebung.

Neues Remote Client API

Für EMCS Remote Clients existiert nun ein neues, verbessertes API, welches auch die neuen Java und Groovy Sprachfeatures im Bereich der funktionalen Programmierung unterstützt.

Die Benutzung von Services am EMCS Server durch einen Remote Client wie z.B. die Abfrage von aggregierten Messwerten einer Zeitreihe wird damit nun noch einfacher!

Beispiel mit einem einfachen EMCS Remote Client in der Programmiersprache Groovy:

println("Measurement values for time series #$timeSeriesID, time interval=$interval")

// Load aggregated measurement values with given time series ID and time interval
// from the remote EMCS server and print them in a simple default format to stdout
JeeClient.remoteLookup(TimeSeriesFactory.class)
.map(tsf -> tsf.getTimeSeries(timeSeriesID, interval))
.map(timeSeries -> timeSeries.getMeasurementValues())
.ifPresentOrElse(values -> values.each(mv -> println(mv)),
() -> println("No measurement values found"))

 

Die Ausgabe dieses Clients für die Zeitreihe #14390 (Feinstaub (PM10), Tagesmittelwerte an einem innerstädtischen Messort) und einem Zeitintervall von 14 Tagen rund um den Jahreswechsel 2018/2019 lautet:

Measurement values for time series #14390, time interval=[1DAY[2018-12-24 00:00:00.000 MEZ;2018-12-24 23:59:59.999 MEZ]:1DAY[2019-01-07 00:00:00.000 MEZ;2019-01-07 23:59:59.999 MEZ]) 
timeSeries=14390, timeStamp=1DAY[2018-12-24 00:00:00.000 MEZ;2018-12-24 23:59:59.999 MEZ], rv=6.0085268473, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-25 00:00:00.000 MEZ;2018-12-25 23:59:59.999 MEZ], rv=15.8974769717, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-26 00:00:00.000 MEZ;2018-12-26 23:59:59.999 MEZ], rv=28.7083668310, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-27 00:00:00.000 MEZ;2018-12-27 23:59:59.999 MEZ], rv=35.6315811873, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-28 00:00:00.000 MEZ;2018-12-28 23:59:59.999 MEZ], rv=43.9421438371, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-29 00:00:00.000 MEZ;2018-12-29 23:59:59.999 MEZ], rv=30.3264750240, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-30 00:00:00.000 MEZ;2018-12-30 23:59:59.999 MEZ], rv=20.7960147069, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2018-12-31 00:00:00.000 MEZ;2018-12-31 23:59:59.999 MEZ], rv=20.3203561898, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-01 00:00:00.000 MEZ;2019-01-01 23:59:59.999 MEZ], rv=69.5061438283, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-02 00:00:00.000 MEZ;2019-01-02 23:59:59.999 MEZ], rv=14.5809146865, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-03 00:00:00.000 MEZ;2019-01-03 23:59:59.999 MEZ], rv=28.1598812338, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-04 00:00:00.000 MEZ;2019-01-04 23:59:59.999 MEZ], rv=32.2697084354, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-05 00:00:00.000 MEZ;2019-01-05 23:59:59.999 MEZ], rv=16.0738145813, pstage=1, mark= (valid)
timeSeries=14390, timeStamp=1DAY[2019-01-06 00:00:00.000 MEZ;2019-01-06 23:59:59.999 MEZ], rv=10.4128979546, pstage=1, mark= (valid)