<?xml version="1.0" ?> 
<xsd:schema targetNamespace="http://www.oasis-open.org/asap/0.9/asap.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:as="http://www.oasis-open.org/asap/0.9/asap.xsd" elementFormDefault="qualified">
<!--  From: http://www.oasis-open.org/committees/download.php/7147/asap.xsd -->
<xsd:annotation>
  <xsd:documentation xml:lang="en">Asynchronous Service Access Protocol Jeffrey Ricker DRAFT Original 2002.02.18 Revised 2003.11.04 Revised 2004.02.26, John Fuller Edited to match up with wd-asap-spec-01d.doc Should Priority be an instance property? Revised 2004.04.14, Sameer Pradhan Edited to allow optional elements to be absent.</xsd:documentation> 
  </xsd:annotation>
<!--  simple property elements ============  --> 
<xsd:complexType name="schemaType">
<xsd:sequence>
  <xsd:any namespace="##other" /> 
  </xsd:sequence>
  <xsd:attribute name="href" type="xsd:anyURI" /> 
  </xsd:complexType>
<xsd:simpleType name="stateType">
<xsd:restriction base="xsd:string">
  <xsd:enumeration value="open.notrunning" /> 
  <xsd:enumeration value="open.notrunning.suspended" /> 
  <xsd:enumeration value="open.running" /> 
  <xsd:enumeration value="closed.completed" /> 
  <xsd:enumeration value="closed.abnormalCompleted" /> 
  <xsd:enumeration value="closed.abnormalCompleted.terminated" /> 
  <xsd:enumeration value="closed.abnormalCompleted.aborted" /> 
  </xsd:restriction>
  </xsd:simpleType>
<xsd:element name="Event">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="Time" type="xsd:dateTime" /> 
<xsd:element name="EventType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
  <xsd:enumeration value="InstanceCreated" /> 
  <xsd:enumeration value="PropertiesSet" /> 
  <xsd:enumeration value="StateChanged" /> 
  <xsd:enumeration value="Subscribed" /> 
  <xsd:enumeration value="Unsubscribed" /> 
  <xsd:enumeration value="Error" /> 
  </xsd:restriction>
  </xsd:simpleType>
  </xsd:element>
  <xsd:element name="SourceKey" type="xsd:anyURI" /> 
  <xsd:element name="Details" type="xsd:anyType" /> 
  <xsd:element name="OldState" type="as:stateType" /> 
  <xsd:element name="NewState" type="as:stateType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:complexType name="historyType">
<xsd:sequence>
  <xsd:element ref="as:Event" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
<xsd:simpleType name="YesNoIfError">
<xsd:restriction base="xsd:string">
  <xsd:enumeration value="Yes" /> 
  <xsd:enumeration value="No" /> 
  <xsd:enumeration value="IfError" /> 
  </xsd:restriction>
  </xsd:simpleType>
<!--  headers ============ 
  --> 
<xsd:element name="Request">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="SenderKey" type="xsd:anyURI" minOccurs="0" /> 
  <xsd:element name="ReceiverKey" type="xsd:anyURI" /> 
  <xsd:element name="ResponseRequired" type="as:YesNoIfError" minOccurs="0" /> 
  <xsd:element name="RequestID" type="xsd:anyURI" minOccurs="0" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="Response">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="SenderKey" type="xsd:anyURI" /> 
  <xsd:element name="ReceiverKey" type="xsd:anyURI" minOccurs="0" /> 
  <xsd:element name="RequestID" type="xsd:anyURI" minOccurs="0" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<!--  properties ============= 
  --> 
<xsd:group name="instancePropertiesGroup">
<xsd:sequence>
  <xsd:element name="Key" type="xsd:anyURI" /> 
  <xsd:element name="State" type="as:stateType" /> 
  <xsd:element name="Name" type="xsd:string" /> 
  <xsd:element name="Subject" type="xsd:string" /> 
  <xsd:element name="Description" type="xsd:string" /> 
  <xsd:element name="FactoryKey" type="xsd:anyURI" /> 
<xsd:element name="Observers">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="ObserverKey" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="ContextData">
<xsd:complexType>
<xsd:sequence>
  <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="ResultData">
<xsd:complexType>
<xsd:sequence>
  <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  <xsd:element name="History" type="as:historyType" /> 
  </xsd:sequence>
  </xsd:group>
<xsd:group name="factoryPropertiesGroup">
<xsd:sequence>
  <xsd:element name="Key" type="xsd:anyURI" /> 
  <xsd:element name="Name" type="xsd:string" /> 
  <xsd:element name="Subject" type="xsd:string" /> 
  <xsd:element name="Description" type="xsd:string" /> 
  <xsd:element name="ContextDataSchema" type="as:schemaType" /> 
  <xsd:element name="ResultDataSchema" type="as:schemaType" /> 
  <xsd:element name="Expiration" type="xsd:duration" /> 
  </xsd:sequence>
  </xsd:group>
<xsd:group name="observerPropertiesGroup">
<xsd:sequence>
  <xsd:element name="Key" type="xsd:anyURI" /> 
  </xsd:sequence>
  </xsd:group>
<!--  messages =================== 
  --> 
  <xsd:element name="GetPropertiesRq" /> 
<xsd:element name="GetPropertiesRs">
<xsd:complexType>
<xsd:choice>
  <xsd:group ref="as:instancePropertiesGroup" /> 
  <xsd:group ref="as:factoryPropertiesGroup" /> 
  <xsd:group ref="as:observerPropertiesGroup" /> 
  </xsd:choice>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="SetPropertiesRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="Subject" type="xsd:string" /> 
  <xsd:element name="Description" type="xsd:string" /> 
  <xsd:element name="Priority" type="xsd:int" /> 
  <xsd:element name="Data" type="xsd:anyType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="SetPropertiesRs">
<xsd:complexType>
<xsd:choice>
  <xsd:group ref="as:instancePropertiesGroup" /> 
  <xsd:group ref="as:factoryPropertiesGroup" /> 
  <xsd:group ref="as:observerPropertiesGroup" /> 
  </xsd:choice>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="SubscribeRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="ObserverKey" type="xsd:anyURI" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  <xsd:element name="SubscribeRs" /> 
<xsd:element name="UnsubscribeRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="ObserverKey" type="xsd:anyURI" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  <xsd:element name="UnsubscribeRs" /> 
<xsd:element name="CreateInstanceRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="StartImmediately" type="xsd:boolean" /> 
  <xsd:element name="ObserverKey" type="xsd:anyURI" minOccurs="0" /> 
  <xsd:element name="Name" type="xsd:string" minOccurs="0" /> 
  <xsd:element name="Subject" type="xsd:string" minOccurs="0" /> 
  <xsd:element name="Description" type="xsd:string" minOccurs="0" /> 
<xsd:element name="ContextData">
<xsd:complexType>
<xsd:sequence>
  <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="CreateInstanceRs">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="InstanceKey" type="xsd:anyURI" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:complexType name="FilterType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
  <xsd:attribute name="filterType" type="xsd:NMTOKEN" /> 
  </xsd:extension>
  </xsd:simpleContent>
  </xsd:complexType>
<xsd:element name="ListInstancesRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="Filter" type="as:FilterType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="Instance">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="InstanceKey" type="xsd:anyURI" /> 
  <xsd:element name="Name" type="xsd:string" minOccurs="0" /> 
  <xsd:element name="Subject" type="xsd:string" minOccurs="0" /> 
  <xsd:element name="Priority" type="xsd:int" minOccurs="0" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="ListInstancesRs">
<xsd:complexType>
<xsd:sequence>
  <xsd:element ref="as:Instance" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="CompletedRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="InstanceKey" type="xsd:anyURI" /> 
<xsd:element name="ResultData">
<xsd:complexType>
<xsd:sequence>
  <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  <xsd:element name="CompletedRs" /> 
<xsd:element name="ChangeStateRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="State" type="as:stateType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="ChangeStateRs">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="State" type="as:stateType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
<xsd:element name="StateChangedRq">
<xsd:complexType>
<xsd:sequence>
  <xsd:element name="State" type="as:stateType" /> 
  <xsd:element name="PreviousState" type="as:stateType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  <xsd:element name="StateChangedRs" /> 
  </xsd:schema>
