-
Key: XTCE13-114
-
Status: closed
-
Source: NASA ( Mr. James Kevin Rice)
-
Summary:
Our for a list<element> in the BooleanExpression which made a base type called – BaseConditionsType is a little too broad because it include sub-type now only relevant on the command side.
we should probably have a ArgumentBaseConditionsType.
The children of it now are:
ANDedConditionsType
ArgumentANDedConditionsType
ORedConditionsType
ArgumentORedConditionsType
ComparisonCheckType
ArgumentComparisonCheckType -
Reported: XTCE 1.2 — Fri, 10 Jul 2020 17:33 GMT
-
Disposition: Resolved — XTCE 1.3
-
Disposition Summary:
Reballot: Split the Base Type to Two Variations for Conditions and Comparison
A single empty type BaseConditionsType is applied to two separate forms of context value expression checks. These are the Condition types and the Comparison types used within BooleanExpressionType constructs.
Propose to separate the base type definition in the schema such that those two different semantics have a different empty base type to help prevent them from being interchanged in code after generation from the schema. This resolution does not affect the XML document structure for the XTCE encapsulated data itself, rather merely the way the schema is organized.
The concept of having the telemetry and commanding variants of these in the inheritance does not appear to provide an issue with the Liskov Substitution Principle, unless something more educated points it out to me.
First, it would be needed to add a new "BaseComparisonType" above the existing "BaseConditionsType". Only one code block is shown to illustrate context for the entirely new type. The existing type is unchanged:
<complexType name="BaseComparisonType" abstract="true">
<annotation>
<documentation xml:lang="en">A base type for comparison related elements that improves the mapping produced by data binding tools.</documentation>
</annotation>
</complexType>
<complexType name="BaseConditionsType" abstract="true">
<annotation>
<documentation xml:lang="en">A base type for boolean expression related elements that improves the mapping produced by data binding tools.</documentation>
</annotation>
</complexType>Then in two of the inherited types, we change the extension from BaseConditionsType to BaseComparisonType. Old and new provided, although the change is just the one line.
For ComparisonCheckType, existing:
<complexType name="ComparisonCheckType">
<annotation>
<documentation xml:lang="en">Describe the comparison between the instance (value) of a parameter against either a specified value or another parameter instance.</documentation>
</annotation>
<complexContent>
<extension base="xtce:BaseConditionsType">
<sequence>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side parameter instance.</documentation>
</annotation>
</element>
<element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
<annotation>
<documentation xml:lang="en">Comparison operator.</documentation>
</annotation>
</element>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Parameter.</documentation>
</annotation>
</element>
<element name="Value" type="string">
<annotation>
<documentation xml:lang="en">Right hand side value. Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>Updated ComparisonCheckType:
<complexType name="ComparisonCheckType">
<annotation>
<documentation xml:lang="en">Describe the comparison between the instance (value) of a parameter against either a specified value or another parameter instance.</documentation>
</annotation>
<complexContent>
<extension base="xtce:BaseComparisonType">
<sequence>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side parameter instance.</documentation>
</annotation>
</element>
<element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
<annotation>
<documentation xml:lang="en">Comparison operator.</documentation>
</annotation>
</element>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Parameter.</documentation>
</annotation>
</element>
<element name="Value" type="string">
<annotation>
<documentation xml:lang="en">Right hand side value. Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>For ArgumentComparisonCheckType, existing:
<complexType name="ArgumentComparisonCheckType">
<annotation>
<documentation xml:lang="en">Identical to ComparisonCheckType but supports argument instance references.</documentation>
</annotation>
<complexContent>
<extension base="xtce:BaseConditionsType">
<sequence>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side parameter instance.</documentation>
</annotation>
</element>
<element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side argument instance.</documentation>
</annotation>
</element>
</choice>
<element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
<annotation>
<documentation xml:lang="en">Comparison operator.</documentation>
</annotation>
</element>
<choice>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
</annotation>
</element>
<element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side argument instance. Argument is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
</annotation>
</element>
</choice>
<element name="Value" type="string">
<annotation>
<documentation xml:lang="en">Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>Updated ArgumentComparisonCheckType:
<complexType name="ArgumentComparisonCheckType">
<annotation>
<documentation xml:lang="en">Identical to ComparisonCheckType but supports argument instance references.</documentation>
</annotation>
<complexContent>
<extension base="xtce:BaseComparisonType">
<sequence>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side parameter instance.</documentation>
</annotation>
</element>
<element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
<annotation>
<documentation xml:lang="en">Left hand side argument instance.</documentation>
</annotation>
</element>
</choice>
<element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
<annotation>
<documentation xml:lang="en">Comparison operator.</documentation>
</annotation>
</element>
<choice>
<choice>
<element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
</annotation>
</element>
<element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
<annotation>
<documentation xml:lang="en">Right hand side argument instance. Argument is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
</annotation>
</element>
</choice>
<element name="Value" type="string">
<annotation>
<documentation xml:lang="en">Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType> -
Updated: Tue, 1 Jul 2025 15:05 GMT
XTCE13 — BaseConditionsType too broad
- Key: XTCE13-114
- OMG Task Force: XML Telemetric & Command Exchange Format 1.3 (XTCE) RTF