Skip to content

[repository schema] Support empty messages, groups and component #253

@rshriver

Description

@rshriver

It is proposed to remove the requirement that a message, repeating group or component must reference at least one field, group or component. An Orchestra XML file would hence already be valid when it preliminarily defines messages but without content. Counterparties can use this to initially agree on the set of supported messages. Fields, groups, and components can be added later.

A use case is a message that does not need additional attributes, e.g. a heartbeat (FIXP supports such a message). The receipt of the message is sufficient information. The identification of the message being sent depends on the encoding. FIX TagValue does not support empty messages as the StandardHeader and StandardTrailer are required elements in every message.

Furthermore, this supports tools that incrementally create an Orchestra XML file and require it to be valid per the schema (XSD) at each step.

<xs:complexType name="messageType">
  <xs:sequence>
    <xs:element name="structure" minOccurs="0">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="componentRef" type="fixr:componentRefType"/>
          <xs:element name="groupRef" type="fixr:groupRefType"/>
          <xs:element name="fieldRef" type="fixr:fieldRefType"/>
        </xs:choice>
        <xs:attribute name="which" type="fixr:memberType"/>
      </xs:complexType>
    </xs:element>
    ...
  </xs:sequence>
  ...
</xs:complexType>
<xs:complexType name="groupType">
  ...
  <xs:sequence>
    <xs:element name="numInGroup" type="fixr:fieldRefType" minOccurs="0"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="componentRef" type="fixr:componentRefType"/>
      <xs:element name="groupRef" type="fixr:groupRefType"/>
      <xs:element name="fieldRef" type="fixr:fieldRefType"/>
    </xs:choice>
    <xs:element name="annotation" type="fixr:annotation" minOccurs="0"/>
  </xs:sequence>
  ...
</xs:complexType>
<xs:complexType name="componentType">
  <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="componentRef" type="fixr:componentRefType"/>
      <xs:element name="groupRef" type="fixr:groupRefType"/>
      <xs:element name="fieldRef" type="fixr:fieldRefType"/>
    </xs:choice>
    <xs:element name="annotation" type="fixr:annotation" minOccurs="0"/>
  </xs:sequence>
  ...
</xs:complexType>

Metadata

Metadata

Assignees

No one assigned

    Labels

    ENCODINGSupport for binary and other encoding protocols

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions