<?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>