270 likes | 388 Views
ATHOS Benutzertreffen. Report of the Lab Glashütten, 12.Oktober 2006 HighQSoft GmbH, Karst Schaap karst.schaap@HighQSoft.de www.highqsoft.de / www.highqsoft.com. 12.Oktober 2006 - 1. Themen. Aktueller Stand der Entwicklung Kundenspezifische Projekte Geplante Entwicklungen
E N D
ATHOS Benutzertreffen Report of the Lab Glashütten, 12.Oktober 2006 HighQSoft GmbH, Karst Schaap karst.schaap@HighQSoft.de www.highqsoft.de / www.highqsoft.com 12.Oktober 2006 - 1
Themen • Aktueller Stand der Entwicklung • Kundenspezifische Projekte • Geplante Entwicklungen • Zugriff auf Massendaten 12.Oktober 2006 - 2
Aktueller Stand der Entwicklung • Allgemeine Erweiterungen • Operating System Support • ASAM ODS 5.1 • Model Mapping 12.Oktober 2006 - 3
Aktueller Stand der Entwicklung • Allgemeine Erweiterungen • Extended Query • DT_ENUM • ID und Referenzen als DT_LONGLONG • Korrektur der Basisattribute bei AoExternal Component • CorbaFileServer 12.Oktober 2006 - 4
Aktueller Stand der Entwicklung • Operating System Support • Windows 2000 (32-Bit) • Windows XP (32-Bit) • Windows 2003 (32-Bit) • Linux, Suse 10 (32-Bit) • Linux, Suse 10, RedHat (64-Bit) 12.Oktober 2006 - 5
Aktueller Stand der Entwicklung 12.Oktober 2006 - 6
Aktueller Stand der Entwicklung • ASAM ODS 5.1 • Verbesserung der Dokumentation. • Verbesserung ATF/XML. • Neue OO-API Methoden. • Neue OO-API Funktionalität. • ASAM ODS 5.1.1 • Mehrere identische ‚Based Relations‘ an ein Element. 12.Oktober 2006 - 7
Aktueller Stand der Entwicklung • Neue OO-API Methoden ODS 5.1 • Interface AoSession • createCoSession() • getUser() • Interface ApplicationElement • getRelationByBaseName() • Interface BaseRelation • getInverseRelationName() • Interface BaseAttribute • getEnumerationDefinition() • Enum SelOpcode • IS_NULL, // Value is NULL • IS_NOT_NULL // Value is not NULL 12.Oktober 2006 - 8
Aktueller Stand der Entwicklung • Neue OO-API Funktionalität • Interface ApplElemAccess • getInstances() • getInstancesExt() • updateInstances() The values of the local column instances are part of the result set when the following criteria all fit: • Only when the attributes id, generation_parameters, values, flags are requested, as soon as any other attributes are requested the values are not reported. • The values of the local column must all belong to exactly one instance of AoMeasurement • The server can be configured to a use not more than a specified amount of memory. As soon as a result set exceeds this limit, an exception will be thrown. • For the rest no iterator is required. 12.Oktober 2006 - 9
Aktueller Stand der Entwicklung • Mehrere identische ‚Based Relations‘ an ein Element UnitUnderTest Parts_1 (Children) Parts_2 (Children) UUT (parent) UUT (parent) UnitUnderTestPart_1 UnitUnderTestPart_2 12.Oktober 2006 - 10
Aktueller Stand der Entwicklung • Geänderte OO-API Methoden ODS 5.1.1 • Interface ApplicationElement Alt: ApplicationRelation getRelationByBaseName( in Name baseRelName) raises (AoException); Neu: ApplicationRelationSequence getRelationsByBaseName( in Name baseRelName) raises (AoException); 12.Oktober 2006 - 11
Aktueller Stand der Entwicklung • Model Mapper • Umstellung von TCL auf Java • Konfigurationsfiles mit XML, Prüfung durch XSD • Einbindung Query mit HQLX Der neue Model Mapper wird nur bei neuen Kunden-projekten eingesetzt, der aktuelle Model Mapper wird weiterhin gewartet und für realisierte Projekte auch erweitert. 12.Oktober 2006 - 12
Kundenspezifische Projekte • Datalogger • PAK Import / Export • Archivierung externe Dateien • Co-Server für Einheiten-Umrechnung • Beratung und Prototyp Erstellung 12.Oktober 2006 - 13
Geplante Entwicklungen • ASAM ODS 5.1.1 Sobald ODS 5.1.1 vom TAB verabschiedet ist, wird der Avalon auf diese Versionumgestellt. • Kundenspezifische Projekte 12. Oktober 2006 - 14
Zugriff auf Massendaten Verschiedene Möglichkeiten: • Interface ValueMatrix • Interface InstanceElement • Interface InstanceElement mit Auslesen von ExternalComponent Dateien • Interface ApplElemAccess 12. Oktober 2006 - 15
Zugriff auf Massendaten ValueMatrix • Aufbau der ValueMatrix von SubMatrix oder Measurement. • Werte immer im MeasurementQuantity Datentyp. • Zugriff der Daten über Zeilen (Vector), Spalten (MeaPoint) und Bereiche. • Einheit ist bei Column zu erfragen. 12. Oktober 2006 - 16
Zugriff auf Massendaten z.B: Measurement meaObj = ieMea.upcastMeasurement(); ValueMatrix vmObj = meaObj.getValueMatrix(); if (vmObj != null) { Column cols[] = vmObj.getColumns("*"); for (int i = 0; i < cols.length; i++) { TS_ValueSeq values = vmObj.getValueVector(cols[i], 0, 0); } vmObj.destroy(); } 12. Oktober 2006 - 17
Zugriff auf Massendaten InstanceElement • Navigation von Measurement auf SubMatrix weiter auf Local Column • Auslesen der Attribute sequence_representation, values, raw_datatype, generation_parameters, global_flag und flags von AoLocalColumn • Auslesen des Attributes datatype von AoMeasurementQuantity • Auswertung der sequence_represenation • Nur Zugriff auf alle Daten einer Local Column • Einheit wird mit geliefert. 12. Oktober 2006 - 18
Zugriff auf Massendaten Sequence_Represenation Explicit, Daten liegen explizit vor in korrektem Datentyp. Implicit_Constant, Ein Wert bei ‚values‘, der für alle Werte zu verwenden ist. Implicit_Linear, Zwei Werte bei ‚values‘, Anfangswert und Offset zur Berechnung der Werte. Implicit_Saw, Drei Werte bei ‚values‘, Anfangswert und Offset und Maximum zur Berechnung der Werte. Raw_Linear, Raw_Polynomial und Raw_Linear_Calibrated, Daten liegen in raw_datatype vor, die generation_parameters werden zur Umrechnung gebraucht. External_Component, Raw_Linear_External, Raw_Polynomial_External und Raw_Linear_Calibrated_External identisch wie Explicit, Raw_Linear, Raw_Polynomial und Raw_Linear_Calibrated der Daten werden von dem Server aus der externen Datei geladen. 12. Oktober 2006 - 19
Zugriff auf Massendaten z.B.: InstanceElementIterator ieSubIter = ieMea.getRelatedInstances(arMeaSub, "*"); if (ieSubIter != null) { InstanceElement ieSub; do { ieSub = ieSubIter.nextOne(); if (ieSub != null) { InstanceElementIterator ieLccIter = ieSub.getRelatedInstances(arSubLcc, "*"); if (ieLccIter != null) { InstanceElement ieLcc; do { ieLcc = ieLccIter.nextOne(); if (ieLcc != null) { NameValueUnit values = ieLcc.getValueByBaseName("values"); 12. Oktober 2006 - 20
Zugriff auf Massendaten ieLcc.destroy(); } } while (ieLcc != null); ieLccIter.destroy(); } ieSub.destroy(); } } while (ieSub != null); ieSubIter.destroy(); } 12. Oktober 2006 - 21
Zugriff auf Massendaten InstanceElement mit Auslesen von ExternalComponent Dateien • Wie bei InstanceElement. • Nur für sequence_represenation External_Component, Raw_Linear_External, Raw_Polynomial_External und Raw_Linear_Calibrated_External • weitere Navigation auf AoExternalComponent. • Zugriff von Client auf Dateien. • Auswertung der Basisattribute von AoExternalComponent 12. Oktober 2006 - 22
Zugriff auf Massendaten ApplElemAccess • Neu in ODS 5.1 • Zugriff auf Werte von mehreren Local Columns in eine Anfrage. • Attribute Auswertung wie bei InstanceElement • Implementierung für getInstances() • Beschränkungen wie oben angegeben • Nur ein Datentyp pro Anfrage 12. Oktober 2006 - 23
Zugriff auf Massendaten z.B.: // Build query for the request of the values QueryStructure qs = new QueryStructure(); // Get the Id of the application elements T_LONGLONG aeSubId = aeSub.getId(); T_LONGLONG aeLccId = aeLcc.getId(); // Deternime the number of attributes ApplicationAttribute aaLccId = aeLcc.getAttributeByBaseName("id"); String aaLccIdName = aaLccId.getName(); ApplicationAttribute aaLccName = aeLcc.getAttributeByBaseName("name"); String aaLccNameName = aaLccName.getName(); ApplicationAttribute aaLccValues = aeLcc.getAttributeByBaseName("values"); 12. Oktober 2006 - 24
Zugriff auf Massendaten // Report the attributes of the localcolumn qs.anuSeq = new AIDNameUnitId[2]; qs.anuSeq[0] = createAIDNameUnitId(aeLccId, aaLccIdName); qs.anuSeq[1] = createAIDNameUnitId(aeLccId, aaLccValues.getName()); // Conditions Name of Localcolumn qs.condSeq = new SelValue[1]; qs.condSeq[0] = createSelValue(aeLccId, aaLccNameName, SelOpcode.LIKE); qs.condSeq[0].value.u.stringVal("*"); // No operation qs.operSeq = new SelOperator[0]; // No order by qs.orderBy = new SelOrder[0]; // Related instance submatrix qs.relInst = new ElemId(); qs.relInst.aid = aeSubId; qs.relName = arSubLcc.getRelationName(); 12. Oktober 2006 - 25
Zugriff auf Massendaten InstanceElementIterator ieSubIter = ieMea.getRelatedInstances(arMeaSub, "*"); if (ieSubIter != null) { InstanceElement ieSub = null; do { ieSub = ieSubIter.nextOne(); if (ieSub != null) { qs.relInst.iid = ieSub.getId(); ElemResultSet res[] = aea.getInstances(qs, 0); ieSub.destroy(); } } while (ieSub != null); ieSubIter.destroy(); } 12. Oktober 2006 - 26