8.5 The Flow XMI Specification of the AADL Meta Model
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http:///AADL/flow" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xmi="http://www.omg.org/XMI" xmlns:flow="http:///AADL/flow" xmlns:feature="http:///AADL/feature" xmlns:core="http:///AADL/core">
      <xsd:import namespace="http:///AADL/feature" schemaLocation="feature.xsd"/>
      <xsd:import namespace="http:///AADL/core" schemaLocation="core.xsd"/>
      <xsd:import namespace="http://www.omg.org/XMI" schemaLocation="XMI.xsd"/>
      <xsd:complexType name="FlowSpec">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="refines" type="flow:FlowSpec"/>
                        </xsd:choice>
                        <xsd:attribute name="refines" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSpec" type="flow:FlowSpec"/>
      <xsd:complexType name="Flows">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="contents" type="xsd:string" nillable="true"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Flows" type="flow:Flows"/>
      <xsd:complexType name="FlowImpl">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowSequence"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowImpl" type="flow:FlowImpl"/>
      <xsd:complexType name="FlowSpecs">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="contents" type="xsd:string" nillable="true"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSpecs" type="flow:FlowSpecs"/>
      <xsd:complexType name="EndToEndFlow">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowSequence"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="EndToEndFlow" type="flow:EndToEndFlow"/>
      <xsd:complexType name="FlowPoint">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element ref="xmi:Extension"/>
            </xsd:choice>
            <xsd:attribute ref="xmi:id"/>
            <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
      </xsd:complexType>
      <xsd:element name="FlowPoint" type="flow:FlowPoint"/>
      <xsd:complexType name="FlowSourceSpec">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowSpec">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="dst" type="flow:FlowPoint"/>
                              <xsd:element name="dstContext" type="feature:PortGroup"/>
                        </xsd:choice>
                        <xsd:attribute name="dst" type="xsd:string"/>
                        <xsd:attribute name="dstContext" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSourceSpec" type="flow:FlowSourceSpec"/>
      <xsd:complexType name="FlowSinkSpec">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowSpec">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="src" type="flow:FlowPoint"/>
                              <xsd:element name="srcContext" type="feature:PortGroup"/>
                        </xsd:choice>
                        <xsd:attribute name="src" type="xsd:string"/>
                        <xsd:attribute name="srcContext" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSinkSpec" type="flow:FlowSinkSpec"/>
      <xsd:complexType name="FlowPathSpec">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowSpec">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="src" type="flow:FlowPoint"/>
                              <xsd:element name="dst" type="flow:FlowPoint"/>
                              <xsd:element name="srcContext" type="feature:PortGroup"/>
                              <xsd:element name="dstContext" type="feature:PortGroup"/>
                        </xsd:choice>
                        <xsd:attribute name="src" type="xsd:string"/>
                        <xsd:attribute name="dst" type="xsd:string"/>
                        <xsd:attribute name="srcContext" type="xsd:string"/>
                        <xsd:attribute name="dstContext" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowPathSpec" type="flow:FlowPathSpec"/>
      <xsd:complexType name="FlowSourceImpl">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowImpl">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="implement" type="flow:FlowSourceSpec"/>
                        </xsd:choice>
                        <xsd:attribute name="implement" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSourceImpl" type="flow:FlowSourceImpl"/>
      <xsd:complexType name="FlowSinkImpl">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowImpl">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="implement" type="flow:FlowSinkSpec"/>
                        </xsd:choice>
                        <xsd:attribute name="implement" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSinkImpl" type="flow:FlowSinkImpl"/>
      <xsd:complexType name="FlowPathImpl">
            <xsd:complexContent>
                  <xsd:extension base="flow:FlowImpl">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="implement" type="flow:FlowPathSpec"/>
                        </xsd:choice>
                        <xsd:attribute name="implement" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowPathImpl" type="flow:FlowPathImpl"/>
      <xsd:complexType name="FlowElement">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="flowSpec" type="flow:FlowSpec"/>
                              <xsd:element name="connection" type="core:Connection"/>
                              <xsd:element name="flowContext" type="core:Subcomponent"/>
                        </xsd:choice>
                        <xsd:attribute name="flowSpec" type="xsd:string"/>
                        <xsd:attribute name="connection" type="xsd:string"/>
                        <xsd:attribute name="flowContext" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowElement" type="flow:FlowElement"/>
      <xsd:complexType name="FlowSequence">
            <xsd:complexContent>
                  <xsd:extension base="core:ModeMember">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="flowElement" type="flow:FlowElement"/>
                              <xsd:element name="refines" type="flow:FlowSequence"/>
                        </xsd:choice>
                        <xsd:attribute name="refines" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="FlowSequence" type="flow:FlowSequence"/>
</xsd:schema>