siehe Version 2.4
siehe Version 2.4
Folgende Erweiterungen, Änderungen und Korrekturen gegenüber vorhergehenden Versionen wurden durchgeführt:
siehe Version 2.4
siehe Version 2.4
Folgende Erweiterungen, Änderungen und Korrekturen gegenüber vorhergehenden Versionen wurden durchgeführt:
Es werden aktualisierte Versionen der Datenmodelle des kv.kappich und des kv.bea benötigt:
Der Bereich kb.systemModellGlobal wird in Version 25 benötigt.
Der Bereich kb.tmVewProtokolleGlobal wird in Version 4 benötigt.
Folgende Erweiterungen, Änderungen und Korrekturen gegenüber vorhergehenden Versionen wurden durchgeführt:
CmdPua
konnte es unter bestimmten Umständen zu einer NullpointerException
kommen,
wenn der benötigte Aufrufparameter datenarten
nicht angegeben wurde. Das Vorhandensein des Aufrufparameters wird jetzt überprüft
und
gegebenenfalls eine entsprechende Fehlermeldung ausgegeben.
NullpointerException
beim Versand von Antworten kommen. Ursache war
der fehlerhafte Versuch von PuA nicht vorhandene Objekte an den Client weiterzuleiten. Dies wurde behoben.
null
war, dann konnten keine Protokolle mehr
von PuA abgerufen werden. Das Problem wurde behoben.
ProtocolAggregationResultData.getData(DataModel, int, String)
, wurde eine IllegalArgumentException
geworfen, wenn zu
der angegebenen Aggregation keine Daten enthalten waren. In der neuen Version wird in diesem Fall null
zurückgegeben.
ProtocolAggregationResultData.getAggregations(int)
ergänzt, mit der die definierten Aggregationen für
den angegebenen Spaltenindex abgefragt werden können.
List <String> getAspects()
in der Klasse AtlDefaults
.
Map <String, SystemObjectType> getAliases()
in der Klasse AtlDefaults
.
NullPointerException
, wenn im Skript nicht explizit eine Protokollart im
Standards-Bereich vorgegeben war. Dieses Problem wurde behoben. Keine explizite Angabe im Skript wird jetzt implizit als
protokollart zustandsprotokoll
interpretiert.
PrettyPrinter
-Funktionalität zur automatischen Formatierung von Skripten hat überflüssige Zeilenumbrüche nach dem Schlüsselwort
protokollart
eingefügt. Diese Inkonsistenz wurde korrigiert.
PrettyPrinter
-Funktionalität hat eine fehlerhafte Ausgabe bei ungebundenen Aliasen generiert, wenn diese innerhalb eines
Mit-Blocks benutzt wurden. Der Fehler wurde korrigiert.
Es werden aktualisierte Versionen der Datenmodelle des kv.kappich und des kv.bea benötigt:
Der Bereich kb.systemModellGlobal wird in Version 25 benötigt.
Der Bereich kb.tmVewProtokolleGlobal wird in Version 3 benötigt.
Folgende Erweiterungen, Änderungen und Korrekturen gegenüber vorhergehenden Versionen wurden durchgeführt:
Es werden aktualisierte Versionen der Datenmodelle des kv.kappich und des kv.bea benötigt:
Der Bereich kb.systemModellGlobal wird in Version 25 benötigt.
Der Bereich kb.tmVewProtokolleGlobal wird in Version 3 benötigt.
Folgende Erweiterungen, Änderungen und Korrekturen gegenüber vorhergehenden Versionen wurden durchgeführt:
de.bsvrz.pua.prot-runtime.jar
enthält neben der Classpath Erweiterung auf alle benötigten Distributionspakete und
Bibliotheken
auch den Namen der Main-Klasse. Damit gibt es die Möglichkeit PuA mit java ... -jar de.bsvrz.pua.prot-runtime.jar ...
ohne Angabe
eines
Classpath und ohne Angabe der Mainklasse zu starten.
spalten: attribut fs:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz filter: einschränkung fs:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz.Güte.Index <> "nicht ermittelbar" definitionen: alias fs = typ.fahrStreifenDer Filterausdruck bezieht sich nur auf das aktuelle PseudoObjekt-Tupel, dessen Werte bei Ausfilterung dann gegebenenfalls leer bleiben.
typ.fahrStreifen:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz.Güte.Index
oder
objekt:atg:asp:att1[5].att2.att3.att4[0].refattr:atg2:asp2:att[1]
usw.
Zu beachten ist, dass die Attribute untereinander wie bisher mit einem Punkt getrennt werden, nicht mit einem Doppelpunkt.
Eine verschachtelte Attributspezifikation mit Zugriff über mehrere Attributlisten und Arrays wie z.B. feld[25].x.y[3].z
ist damit
jetzt
möglich.
PuaClient.getRequestId()
vergebenen IDs waren bei Verwendung von mehreren PuaClient-Objekten nicht zwangsweise eindeutig.
PuaClient.getRequestId()
liefert jetzt auch bei mehreren PuaClient-Instanzen eindeutige Anfrage-Ids. Diese werden fortlaufend
beginnend bei 1
vergeben.
PuaClient.getIsActive()
kann clientseitig abgefragt werden, ob PuA und das von PuA verwendete Archivsystem
läuft. Die
Methode
liefert true zurück wenn PuA läuft und das Archivsystem erreichen kann.
ProtocolResultData
und ProtocolAggregationResultData
(siehe
weiter unten). bieten
jetzt u.A. die Methode getData()
mit dem ein Data-Objekt erzeugt werden kann, dass automatisch die Skalierung von Werten und den
Zugriff auf
Einheiten
und Zustandswerte übernimmt. Der Zugriff auf die alte values-Eigenschaft ist nicht mehr zu empfehlen, da dort durch weitere Änderungen jetzt
andere,
neuartige und teilweise auch unerwartete Wertetypen und insbesondere auch skalierte Werte enthalten sind. Falls dennoch ein direkter Zugriff
stattfinden
soll, sollte grundsätzlich beachtet werden, dass long
-Werte generell unskaliert und double
-Werte generell skaliert
sind. Für die
Prüfung, ob
ein
Datensatz vorhanden ist, kann die Funktion isDefined()
im Data-Objekt benutzt werden.
getScaledValue
, getSuffixText
, getAttributeType
usw.)
isNumber()
aufgerufen werden. Da die Zahlen als double
verarbeitet werden, können aufgrund der begrenzten
Genauigkeit
geringfügige Rechenfehler
entstehen.
-groesseWarteschlange=x
angepasst werden. Bei dem Wert 0 erhalten Clients
sofort eine
Fehlermeldung, wenn alle Threads belegt sind.
PuaClient.getDefaults()
abgefragt werden, diese Funktion verhält sich ähnlich zu getSource()
.
Beispielaufruf:
final AtlDefaults atlDefaults = new AtlDefaults(); final AtlMeta atlMeta = new AtlMeta(); final ProtocolRequestResult requestResult = puaClient.getDefaults(script, atlDefaults, atlMeta);Anschließend befinden sich die Standardwerte in
atlDefaults
.
ProtocolAdministrationData
als creatorName
und protocolDate
zur Verfügung.
abort()
definiert geschlossen werden können. Nach dem
Aufruf von
abort()
wird jetzt in jedem Fall eine definierte Fehlermeldung ausgegeben. ("Verbindung zum Server wurde geschlossen.")
PuaClient.addProtocolListener()
und PuaClient.removeProtocolListener()
kann sich ein Client
über die
Fertigstellung eines im
Hintergrund erstellten und gesicherten Protokolls benachrichtigen lassen. Es wird für jedes fertig gestellte Protokoll die Protokoll-ID
übertragen
und
an den von der Anwendung implementierten Listener übergeben.
ProcessingParameter.setInfoText()
und
ProcessingParameter.setIsPublic()
Beschreibungstext und
Benutzer-Flag
festlegen. Bei Protokollauflistungen vom PuaClient werden nur öffentliche Protokolle und Protokolle des übergebenen Benutzers geliefert. Der
Beschreibungstext ist im ProtocolAdministrationData.infoText
abrufbar.
ProtocolData.convertDataToList(...)
generierbar.
ProtocolAggregationData.getOrders()
des
Aggregationsdatensatzes
abrufbar.
fs:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz.Güte.Index: aggregation mittelwert, summe, maximumDa die Aggregations-(Ergebnis-)Datensätze dadurch mehr als ein Datum pro Spalte erhalten und auch weitere Informationen enthalten, werden Aggregationsergebnisse jetzt in der Klasse
ProtocolAggregationResultData
übertragen. Diese bietet, analog zu den oben erwähnten
Data-basierten
Methoden,
Methoden um z.B. das Ergebnis einer speziellen Aggregation abzurufen.
- string
- StringAttributeType
- boolean
- att.jaNein, StringAttributeType
- zahlwerte
- StringAttributeType, DoubleAttributeType, TimeAttributeType [2] sowie IntegerAttributType mit Wertebereich.
1) Die PuA-seitige Konvertierung in Strings findet derzeit ohne nennenswerte Berücksichtigung des Attributtypen statt. So befinden sich im String-Wert weder Einheiten, noch attributtyp-spezifische Formatierungen. Ein Zeitattribut mit dem Wert "1 Minute" wird also z.B. für Stringvergleiche, Konkatenationen usw. einfach als "60.000" behandelt. Clientseitig berücksichtigt das in AP 6 implementierte Data-Objekt den Attributtypen und liefert, falls dieser sinnvoll gewählt ist, eine bessere Ausgabe.
2) Zeitattribut-Werte werden generell als Millisekunden behandelt. Sowohl beim Konvertieren von einem Datenwert in einen Zahlwert zur internen Verarbeitung in Berechnungen, Vergleichen usw., als auch beim Rückkonvertieren in ein Zeitattribut.
standards
-Bereich nicht mehr möglich.
spalten: attribut fs:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz tempAttribut test filter: definitionen: tempAttribut test:att.jaNein=fs:atg.verkehrsDatenKurzZeitFs:asp.agregation1Minute:qKfz.Güte.Index > 0.5 alias fs = typ.fahrStreifenDabei werden, wie von realen Attributen gewohnt, mehrere Spalten pro Attributangabe erzeugt.
getIntervalIndex()
mit der der verwendete Zeitintervallindex ausgegeben werden kann. Da die
Zeitintervalle PuA-seitig sortiert verarbeitet werden, ist es möglicherweise zur besseren Zuordnung sinnvoll, bereits zeitlich sortierte
Eingabezeitintervalle zu verwenden.
ProtocolAggregationResultData.getStartTimeStamp()
sowie
ProtocolAggregationResultData.getEndTimeStamp()
sowie die Fields ProtocolAggregationResultData.startTimeStamps
und
ProtocolAggregationResultData.endTimeStamps
, die sich wie die Zeitstempel von normalen Ergebnisdatensätzen verhalten.
PuaClient.getStatus()
konnte eine NullPointerException
auftreten, z.B. wenn ein Client eine PuA-Anfrage gestellt hat und PuA
zu diesem Zeitpunkt nicht lief.
[false, false, true, false] => true
, oder sogar
[false, false, false, false] => true
). Das Problem wurde so korrigiert, dass das Ergebnis true
ist, wenn mindestens die Hälfte
der Booleans true
sind.
BaseDataSet.compareData()
, die Prüfung auf Null-Werte wurde nur für das erste Array durchgeführt und zwar doppelt. Der
entsprechende Zugriff wurde korrigiert.
ProcessingParameter()
nicht funktioniert
und wurde korrigiert.
isArithmetic()
hat für Zustandswerte, die nicht in einem Wertebereich liegen, falsche Ergebnisse geliefert und wurde korrigiert.
ProtocolRequestReceiver
waren fehlerhafte Thread-Synchronisationen enthalten, die in seltenen Fällen zur Blockierung von PuA
führen konnten.
atl.Detail
nicht aktualisiert. Das Problem wurde korrigiert.
-kommandoPort=...
und -kommandoTimeout=...
für den in PuA enthaltenen Telnet-Server wurden nicht korrekt
ausgewertet. Problem wurde analysiert und behoben.
(fs,mq,mqü)=(fs1,mq1,)(fs2,,mq2ü)(fs3,,)(,mq3,mq3ü)Diese Syntax ist für den Standardwert innerhalb des Skriptes oder für
CmdPua
zu verwenden. Wenn ProcessingParameter
benutzt wird,
kann das entsprechende Array mit null
-Werten oder Leerstrings ($quot;$quot;) befüllt werden. Siehe
ProcessingParameter.setPseudoObjects()
. Die Angabe von anderen nicht existierenden Objekten führt jetzt zu einem definierten Fehler
und nicht
wie bisher zu einem Crash durch eine NullPointerException
.
ProcessingParameter
wurde angepasst, indem öffentliche Fields durch Getter und Setter ersetzt wurden,
damit auf
zuverlässige Weise eine Gültigkeitsprüfung durchgeführt werden kann. Desweiteren wurden Änderungen an den enthaltenen Werten vorgenommen, die
entweder
notwendig waren oder für sinnvoll gehalten wurden:
ArchiveDataKindCombination
gesetzt und auslesen werden.
Map<String, List<String>>
übergeben werden. Der bisherige Weg über eine
Hashtable<String, String[]>
(bzw. jetzt eine Map<String , String[]>
, siehe nächster Punkt) wird
aus
Kompatibilitätsgründen noch unterstützt.
Hashtable
, HashSet
und List
jetzt
allgemeinere
Klassen vom Typ Map
, Set
und Collection
.
ProtocolAdministrationData.columns[x]
abrufen, wobei die von Column
geerbten Klassen RealAttributeColumn
und TempAttributeColumn
entsprechende Methoden (getAlias()
,
getPseudoObjektIndex()
) beinhalten.
ProtocolResultData.order
nicht mehr
sinnvoll, da
diese immer LISTE
enthält. Die Eigenschaft ist aus Kompatibilitätsgründen noch vorhanden, sollte aber nicht mehr benutzt werden.
zustandsprotokoll
bewirkte im Skript das falsche Verhalten. Es wurde dann ein Änderungsprotokoll erstellt. Das Problem wurde
korrigiert.
ArchiveBuffer
, OnlineDataReceiverObject
, Processing
,
ProtocolRequestReceiver
,
ThreadElement
enthaltenen Thread-Synchronisierungen waren fehlerhaft und wurden korrigiert.