Default Engine Schema

<?xml version='1.0' encoding="UTF-8"?>
<!--

  Copyright © 2008 Bluestem Software LLC
  
  All Rights Reserved. Bluestem Software LLC licenses this file
  to you under the Ext EOA Specification License Agreement [1]. You
  may not use this file except in compliance with the License. You
  may obtain a copy of the License at:
  
  [1] http://alakai.org/licensing/specification-eoa-ext-license.html
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied. See the License for the
  specific language governing permissions and limitations
  under the License.
  
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://bluestemsoftware.org/specification/eoa/ext/engine/default/1.0" xmlns:tns="http://bluestemsoftware.org/specification/eoa/ext/engine/default/1.0" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" elementFormDefault="qualified">
  <xs:element name="engine">
    <xs:annotation>
      <xs:documentation>Models a type specific instance of org.bluestemsoftware.specification.eoa.component.engine.rt.EngineRT. See class for additional documentation.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="configuration" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:group ref="tns:gEngineConfiguration" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="partners" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="engineReference" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="serviceReference" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="endpointReference" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="operationReference" minOccurs="0" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="actionReference" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                                          </xs:sequence>
                                          <xs:attribute name="action" use="required" type="xs:anyURI" />
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                                    </xs:sequence>
                                    <xs:attribute name="operationName" use="required" type="xs:QName" />
                                  </xs:complexType>
                                </xs:element>
                                <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                              </xs:sequence>
                              <xs:attribute name="endpointName" use="required" type="xs:NCName" />
                            </xs:complexType>
                          </xs:element>
                          <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>
                        <xs:attribute name="serviceName" use="required" type="xs:QName" />
                      </xs:complexType>
                      <xs:unique name="endpointName.name">
                        <xs:selector xpath="./tns:endpointReference" />
                        <xs:field xpath="@endpointName" />
                      </xs:unique>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="engineName" type="xs:QName" use="required" />
                </xs:complexType>
                <xs:unique name="serviceref.service.name">
                  <xs:selector xpath="./tns:serviceReference" />
                  <xs:field xpath="@serviceName" />
                </xs:unique>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:QName" />
    </xs:complexType>
    <xs:unique name="engine.name">
      <xs:selector xpath="./tns:engineReference" />
      <xs:field xpath="@engineName" />
    </xs:unique>
  </xs:element>
  <xs:group name="gPolicy">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/ns/ws-policy" processContents="lax" />
    </xs:sequence>
  </xs:group>
  <xs:group name="gEngineConfiguration">
    <xs:annotation>
      <xs:documentation>Configuration used by provider to initialize state.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="requiredFeatures" minOccurs="0">
        <xs:annotation>
        <xs:documentation>Defines required application features. See comment on EngineRT.getRequiredApplicationFeatures()</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="feature" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:choice>
        <xs:any namespace="##other" processContents="lax" />
        <xs:any namespace="##local" processContents="lax" />
      </xs:choice>
    </xs:sequence>
  </xs:group>
</xs:schema>