athos benutzertreffen 12.oktober 2006 - 1 report of the lab glashütten, 12.oktober 2006 highqsoft...
Post on 05-Apr-2015
107 Views
Preview:
TRANSCRIPT
ATHOS Benutzertreffen
12.Oktober 2006 - 1
Report of the Lab
Glashütten, 12.Oktober 2006
HighQSoft GmbH, Karst Schaap
karst.schaap@HighQSoft.de
www.highqsoft.de / www.highqsoft.com
Themen
12.Oktober 2006 - 2
• Aktueller Stand der Entwicklung
• Kundenspezifische Projekte
• Geplante Entwicklungen
• Zugriff auf Massendaten
Aktueller Stand der Entwicklung
12.Oktober 2006 - 3
• Allgemeine Erweiterungen
• Operating System Support
• ASAM ODS 5.1
• Model Mapping
Aktueller Stand der Entwicklung
12.Oktober 2006 - 4
• Allgemeine Erweiterungen– Extended Query– DT_ENUM– ID und Referenzen als DT_LONGLONG– Korrektur der Basisattribute bei AoExternal
Component– CorbaFileServer
Aktueller Stand der Entwicklung
12.Oktober 2006 - 5
• 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)
Aktueller Stand der Entwicklung
12.Oktober 2006 - 6
Windows Linux 32-Bit Linux 64-Bit
AsamCommander Ja Ja Ja
Avalon Ja Ja, nur 32 Id. Ja
Ascoba Ja Ja. Ja
AOP3Server Ja Nein Nein
Mme (Oracle 9.2) Ja Ja Ja
XATF Ja Ja Ja
ATF Ja Ja Ja
AVL3 Ja Ja Ja
Esql Ja Nein Nein
Aktueller Stand der Entwicklung
12.Oktober 2006 - 7
• 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.
Aktueller Stand der Entwicklung
12.Oktober 2006 - 8
• 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
Aktueller Stand der Entwicklung
12.Oktober 2006 - 9
• 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.
Aktueller Stand der Entwicklung
12.Oktober 2006 - 10
• Mehrere identische ‚Based Relations‘ an ein Element
UnitUnderTest
UnitUnderTestPart_1 UnitUnderTestPart_2
UUT (parent) UUT (parent)
Parts_1(Children)
Parts_2(Children)
Aktueller Stand der Entwicklung
12.Oktober 2006 - 11
• Geänderte OO-API Methoden ODS 5.1.1– Interface ApplicationElementAlt:
ApplicationRelation getRelationByBaseName(
in Name baseRelName)
raises (AoException);
Neu:ApplicationRelationSequence getRelationsByBaseName(
in Name baseRelName)
raises (AoException);
Aktueller Stand der Entwicklung
12.Oktober 2006 - 12
• 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.
Kundenspezifische Projekte
12.Oktober 2006 - 13
• Datalogger• PAK Import / Export• Archivierung externe Dateien• Co-Server für Einheiten-Umrechnung• Beratung und Prototyp Erstellung
Geplante Entwicklungen
12. Oktober 2006 - 14
• ASAM ODS 5.1.1 Sobald ODS 5.1.1 vom TAB verabschiedet ist,
wird der Avalon auf diese Version umgestellt.
• Kundenspezifische Projekte
Zugriff auf Massendaten
12. Oktober 2006 - 15
Verschiedene Möglichkeiten:– Interface ValueMatrix– Interface InstanceElement– Interface InstanceElement mit Auslesen
von ExternalComponent Dateien– Interface ApplElemAccess
Zugriff auf Massendaten
12. Oktober 2006 - 16
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.
Zugriff auf Massendaten
12. Oktober 2006 - 17
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();
}
Zugriff auf Massendaten
12. Oktober 2006 - 18
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.
Zugriff auf Massendaten
12. Oktober 2006 - 19
Sequence_RepresenationExplicit, 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.
Zugriff auf Massendaten
12. Oktober 2006 - 20
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");
Zugriff auf Massendaten
12. Oktober 2006 - 21
ieLcc.destroy();
}
} while (ieLcc != null);
ieLccIter.destroy();
}
ieSub.destroy();
}
} while (ieSub != null);
ieSubIter.destroy();
}
Zugriff auf Massendaten
12. Oktober 2006 - 22
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
Zugriff auf Massendaten
12. Oktober 2006 - 23
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
Zugriff auf Massendaten
12. Oktober 2006 - 24
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");
Zugriff auf Massendaten
12. Oktober 2006 - 25
// Report the attributes of the localcolumnqs.anuSeq = new AIDNameUnitId[2];qs.anuSeq[0] = createAIDNameUnitId(aeLccId, aaLccIdName);qs.anuSeq[1] = createAIDNameUnitId(aeLccId, aaLccValues.getName());// Conditions Name of Localcolumnqs.condSeq = new SelValue[1];qs.condSeq[0] = createSelValue(aeLccId, aaLccNameName, SelOpcode.LIKE);qs.condSeq[0].value.u.stringVal("*");// No operationqs.operSeq = new SelOperator[0];// No order byqs.orderBy = new SelOrder[0];// Related instance submatrixqs.relInst = new ElemId();qs.relInst.aid = aeSubId;qs.relName = arSubLcc.getRelationName();
Zugriff auf Massendaten
12. Oktober 2006 - 26
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();}
Vielen Dank für Ihre Aufmerksamkeit
top related