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)