<?xml version="1.0" encoding="UTF-8"?>
<!--
	October 15, 2002

	(c) Copyright 2002, The Web Services-Interoperability Organization (WS-I)
	Download or use of this file is governed by the Policies and Bylaws of WS-I.

	For more information, send email info@ws-i.org. 	
-->
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cb="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer/CallBack" xmlns:ct="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd" xmlns:cfg="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.wsdl" xmlns:po="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerPO.xsd" xmlns:sn="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerSN.xsd" xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl" targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl" xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/">
	<wsdl:documentation>
	      This WSDL document describes the Manufacturer service for the WS-I Basic Sample Application. This service
	      is part of a supply chain management system. It is used to demonstrate a web service that is
	      conformant with the Basic Profile and to show how different web service platforms can interoperate.
	</wsdl:documentation>
	<wsdl:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.wsdl" location="Configuration.wsdl"/>
	<wsdl:types>
		<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified">
			<xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd" schemaLocation="../2002-08/Configuration.xsd"/>
			<xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerPO.xsd" schemaLocation="ManufacturerPO.xsd"/>
			<xs:import namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerSN.xsd" schemaLocation="ManufacturerSN.xsd"/>
		</xs:schema>
		<xs:schema targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer/CallBack" elementFormDefault="qualified" attributeFormDefault="unqualified">
			<xs:element name="StartHeader" type="cb:StartHeaderType"/>
			<xs:element name="CallbackHeader" type="cb:CallbackHeaderType"/>
			<xs:element name="CallbackFault" type="cb:CallbackFaultType"/>
			<xs:complexType name="StartHeaderType">
				<xs:sequence>
					<xs:element minOccurs="1" maxOccurs="1" name="conversationID" type="xs:string"/>
					<xs:element minOccurs="1" maxOccurs="1" name="callbackLocation" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="CallbackHeaderType">
				<xs:sequence>
					<xs:element minOccurs="1" maxOccurs="1" name="conversationID" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="CallbackFaultType">
				<xs:sequence>
					<xs:element name="Reason">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:enumeration value="notFound"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
					<xs:element minOccurs="1" maxOccurs="1" name="conversationID" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
		</xs:schema>
	</wsdl:types>
	<wsdl:message name="POSubmit">
		<wsdl:documentation>
		A purchase order.
		</wsdl:documentation>
		<wsdl:part name="PurchaseOrder" element="po:PurchaseOrder"/>
		<wsdl:part name="ConfigurationHeader" element="ct:Configuration"/>
		<wsdl:part name="StartHeader" element="cb:StartHeader"/>
	</wsdl:message>
	<wsdl:message name="ackPO">
		<wsdl:documentation>
        	A response of true indicates the purchase order has been accepted for processing. 
 		</wsdl:documentation>
		<wsdl:part name="Response" element="po:ackPO"/>
	</wsdl:message>
	<wsdl:message name="submitPOFault">
		<wsdl:documentation>
		A reason code for the rejection of a given PO that can be matched through the conversationID
		in the callback section of the SOAP header.
		</wsdl:documentation>
		<wsdl:part name="POFault" element="po:submitPOFault"/>
	</wsdl:message>
	<wsdl:message name="SNSubmit">
		<wsdl:documentation>
		A shipment notification.
		</wsdl:documentation>
		<wsdl:part name="ShipmentNotice" element="sn:ShipmentNotice"/>
		<wsdl:part name="ConfigurationHeader" element="ct:Configuration"/>
		<wsdl:part name="CallbackHeader" element="cb:CallbackHeader"/>
	</wsdl:message>
	<wsdl:message name="processPOFault">
		<wsdl:documentation>
		Alternative to SNSubmit, indicates a reason for the rejection of a given PO after
		having been acknowledged by the Manufacturer.  Contains callback information with
		which to find the original replenishment request.
		</wsdl:documentation>
		<wsdl:part name="processPOFault" element="po:submitPOFault"/>
		<wsdl:part name="ConfigurationHeader" element="ct:Configuration"/>
		<wsdl:part name="CallbackHeader" element="cb:CallbackHeader"/>
	</wsdl:message>
	<wsdl:message name="ackSN">
		<wsdl:documentation>
        	A response of true indicates the shipment notice has been accepted for processing. 
 		</wsdl:documentation>
		<wsdl:part name="Response" element="sn:ackSN"/>
	</wsdl:message>
	<wsdl:message name="Callback">
		<wsdl:documentation>
		To be used in SOAP headers for relating two req/resp message pairs sent asynchronously.
		The CallbackFault indicates a reason for the rejection of the second req/resp pair.
		</wsdl:documentation>
		<wsdl:part name="CallbackFault" element="cb:CallbackFault"/>
	</wsdl:message>
	<wsdl:portType name="ManufacturerPortType">
		<wsdl:operation name="submitPO">
			<wsdl:documentation>Submit a purchase order for specified items to the manufacturer.</wsdl:documentation>
			<wsdl:input message="tns:POSubmit"/>
			<wsdl:output message="tns:ackPO"/>
			<wsdl:fault name="POFault" message="tns:submitPOFault"/>
			<wsdl:fault name="ConfigurationFault" message="cfg:ConfigurationFaultMessage"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:portType name="WarehouseCallbackPortType">
		<wsdl:operation name="submitSN">
			<wsdl:documentation>Submit a shipment notice for specified items to the retailer.</wsdl:documentation>
			<wsdl:input message="tns:SNSubmit"/>
			<wsdl:output message="tns:ackSN"/>
			<wsdl:fault name="ConfigurationFault" message="cfg:ConfigurationFaultMessage"/>
			<wsdl:fault name="CallbackFault" message="tns:Callback"/>
		</wsdl:operation>
		<wsdl:operation name="errorPO">
			<wsdl:documentation>Notify warehouse  there was an error in processing a submitted PO.</wsdl:documentation>
			<wsdl:input message="tns:processPOFault"/>
			<wsdl:output message="tns:ackPO"/>
			<wsdl:fault name="ConfigurationFault" message="cfg:ConfigurationFaultMessage"/>
			<wsdl:fault name="CallbackFault" message="tns:Callback"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="ManufacturerSoapBinding" type="tns:ManufacturerPortType">
		<wsdl:documentation>
			<wsi:Claim conformsTo="http://ws-i.org/profiles/basic1.0/"/>
		</wsdl:documentation>
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="submitPO">
			<soap:operation/>
			<wsdl:input>
				<soap:body parts="PurchaseOrder" use="literal"/>
				<soap:header message="tns:POSubmit" part="ConfigurationHeader" use="literal">
					<soap:headerfault message="cfg:ConfigurationFaultMessage" part="ConfigurationFault" use="literal"/>
				</soap:header>
				<soap:header message="tns:POSubmit" part="StartHeader" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
			<wsdl:fault name="POFault">
				<soap:fault name="POFault" use="literal"/>
			</wsdl:fault>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:binding name="WarehouseCallbackSoapBinding" type="tns:WarehouseCallbackPortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="submitSN">
			<soap:operation/>
			<wsdl:input>
				<soap:body parts="ShipmentNotice" use="literal"/>
				<soap:header message="tns:SNSubmit" part="ConfigurationHeader" use="literal">
					<soap:headerfault message="cfg:ConfigurationFaultMessage" part="ConfigurationFault" use="literal"/>
				</soap:header>
				<soap:header message="tns:SNSubmit" part="CallbackHeader" use="literal">
					<soap:headerfault message="tns:Callback" part="CallbackFault" use="literal"/>
				</soap:header>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="Response" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="errorPO">
			<soap:operation/>
			<wsdl:input>
				<soap:body parts="processPOFault" use="literal"/>
				<soap:header message="tns:processPOFault" part="CallbackHeader" use="literal">
					<soap:headerfault message="tns:Callback" part="CallbackFault" use="literal"/>
				</soap:header>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="Response" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
</wsdl:definitions>
<!-- The following is an example of a SOAP request message compliant with the above WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header>
    <ns1:Configuration xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd">
      <ns1:UserId>Some user ID</ns1:UserId>
      <ns1:ServiceUrl Role="LoggingFacility">http://localhost:999/WS-I_Sample/services/LoggingFacility</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="Retailer">http://localhost:999/WS-I_Sample/services/Retailer</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="WarehouseA">http://localhost:999/WS-I_Sample/services/WarehouseA</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="WarehouseB">http://localhost:999/WS-I_Sample/services/WarehouseB</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="WarehouseC">http://localhost:999/WS-I_Sample/services/WarehouseC</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="ManufacturerA">http://localhost:999/WS-I_Sample/services/ManufacturerA</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="ManufacturerB">http://localhost:999/WS-I_Sample/services/ManufacturerB</ns1:ServiceUrl>
      <ns1:ServiceUrl Role="ManufacturerC">http://localhost:999/WS-I_Sample/services/ManufacturerC</ns1:ServiceUrl>
    </ns1:Configuration>
    <ns2:StartHeader xmlns:ns2="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer/CallBack">
      <ns2:conversationID>1</ns2:conversationID>
	<ns2:callbackLocation>http://localhost:999/WS-I_Sample/services/WarehouseCallBack</ns2:callbackLocation>
    </ns2:StartHeader>
  </soapenv:Header>
  <soapenv:Body>
    <PurchaseOrder xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerPO.xsd">
      <orderNum>1</orderNum>
      <customerRef>ABCD999999999EFG</customerRef>
      <items>
        <Item>
          <ID>605002</ID>
          <qty>18</qty>
          <price>100.0</price>
        </Item>
      </items>
      <total>0.0</total>
    </PurchaseOrder>
  </soapenv:Body>
</soapenv:Envelope>

and the reply from the Manufacturer:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <ackPO xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerPO.xsd">true</ackPO>
  </soapenv:Body>
</soapenv:Envelope>

and the callback request:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header>
    <ns1:CallbackHeader xmlns:ns1="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer/CallBack">
      <ns1:conversationID>1</ns1:conversationID>
    </ns1:CallbackHeader>
    <ns2:Configuration xmlns:ns2="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Configuration.xsd">
      <ns2:UserId>Some user ID</ns2:UserId>
      <ns2:ServiceUrl Role="LoggingFacility">http://localhost:999/WS-I_Sample/services/LoggingFacility</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="Retailer">http://localhost:999/WS-I_Sample/services/Retailer</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="WarehouseA">http://localhost:999/WS-I_Sample/services/WarehouseA</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="WarehouseB">http://localhost:999/WS-I_Sample/services/WarehouseB</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="WarehouseC">http://localhost:999/WS-I_Sample/services/WarehouseC</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="ManufacturerA">http://localhost:999/WS-I_Sample/services/ManufacturerA</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="ManufacturerB">http://localhost:999/WS-I_Sample/services/ManufacturerB</ns2:ServiceUrl>
      <ns2:ServiceUrl Role="ManufacturerC">http://localhost:999/WS-I_Sample/services/ManufacturerC</ns2:ServiceUrl>
    </ns2:Configuration>
  </soapenv:Header>
  <soapenv:Body>
    <ShipmentNotice xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerSN.xsd">
      <shipNum>1</shipNum>
      <orderNum>1</orderNum>
      <customerRef>ABCD999999999EFG</customerRef>
      <items>
        <Item>
          <ID>605002</ID>
          <qty>18</qty>
          <price>100.0</price>
        </Item>
      </items>
      <total>0.0</total>
    </ShipmentNotice>
  </soapenv:Body>
</soapenv:Envelope>

and the Callback reply:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <ackSN xmlns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/ManufacturerSN.xsd">true</ackSN>
  </soapenv:Body>
</soapenv:Envelope>


-->
