<?xml version="1.0"?>
<definitions name="ValidationProcess"
        targetNamespace="http://sample.bpel.org/bpel/sample" xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:p="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:p1="http://schemas.xmlsoap.org/wsdl/http/" xmlns:n="http://bpel.lmcu.fr/Notification/" xmlns:p2="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     TYPE DEFINITION - List of services participating in this BPEL process 
     The default output of the BPEL designer uses strings as input and 
     output to the BPEL Process. But you can define or import any XML 
     Schema type and us them as part of the message types.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
   <import namespace="http://bpel.lmcu.fr/Notification/" location="Notification.wsdl"/>
       
    <types>  
        <schema attributeFormDefault="unqualified" 
                elementFormDefault="qualified" 
                targetNamespace="http://sample.bpel.org/bpel/sample" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:Q1="http://www.example.org/Notification" xmlns:Q2="http://bpel.lmcu.fr/tests/Validation" xmlns:Q3="http://bpel.lmcu.fr/tests/Validation">
                
            <import schemaLocation="Notification.xsd" namespace="http://bpel.lmcu.fr/tests/Validation"></import>
            <element name="ValidationProcessRequest"
            	type="tns:ValidationProcessRequestType">
            </element>

            <element name="ValidationProcessResponse">
                <complexType>
                    <sequence>
                        <element name="result" type="string"/>
                    </sequence>
                </complexType>
            </element>
            
            <element name="NewOperation">
            	<complexType>
            		<sequence>
            			<element name="in" type="string"></element>
            		</sequence>
            	</complexType>
            </element>
            <element name="NewOperationResponse">
            	<complexType>
            		<sequence>
            			<element name="out" type="string"></element>
            		</sequence>
            	</complexType>
            </element>
        
        
            <complexType name="ValidationProcessRequestType">
            	<sequence>
            		<element name="Request" type="Q2:RequeteType"></element>
            	</sequence>
            </complexType>
        </schema>
    </types>
  
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     MESSAGE TYPE DEFINITION - Definition of the message types used as 
     part of the port type defintions
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <message name="ValidationProcessRequestMessage">
        <part name="payload" element="tns:ValidationProcessRequest"/>
    </message>
    
    <message name="ValidationProcessResponseMessage">
        <part name="payload" element="tns:ValidationProcessResponse"/>
    </message>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PORT TYPE DEFINITION - A port type groups a set of operations into
     a logical service unit.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- portType implemented by the ValidationProcess BPEL process -->
    <message name="NewOperationRequest">
    	<part name="reponse" type="p:string"></part>
    </message>
    <message name="NewOperationResponse">
    	<part name="ack" type="p:string"></part>
    </message>
    <portType name="ValidationProcess">
        <operation name="initiate">
            <input message="tns:ValidationProcessRequestMessage"/>
        </operation>
    </portType>

    <!-- portType implemented by the requester of ValidationProcess BPEL process 
         for asynchronous callback purposes
         -->
    <portType name="ValidationProcessCallback">
        <operation name="onResult">
            <input message="tns:ValidationProcessResponseMessage"/>
        </operation>
    </portType>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PARTNER LINK TYPE DEFINITION
         the ValidationProcess partnerLinkType binds the provider and
         requester portType into an asynchronous conversation.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <plnk:partnerLinkType name="ValidationProcessPLT">
        <plnk:role name="ValidationProcessProvider" portType="tns:ValidationProcess"/>
        <plnk:role name="ValidationProcessRequester" portType="tns:ValidationProcessCallback"/>
    </plnk:partnerLinkType>   
    <binding name="ValidationProcessBinding"
    	type="tns:ValidationProcess">
    	<soap:binding style="document"
    		transport="http://schemas.xmlsoap.org/soap/http"/>
    	<operation name="initiate">
    		<soap:operation
    			soapAction="http://sample.bpel.org/bpel/sample/initiate"/>
    		<input>
    			<soap:body use="literal"></soap:body>
    		</input>
    	</operation>
    </binding>
    <binding name="NotifierPTBinding" type="n:NotifierPT">
    	<soap:binding style="document"
    		transport="http://schemas.xmlsoap.org/soap/http" />
    	<operation name="accept">
    		<soap:operation
    			soapAction="http://sample.bpel.org/bpel/sample/accept" />
    		<input>
    			<soap:body use="literal" />
    		</input>
    	</operation>
    </binding>
    <service name="ValidationProcessService">
    	<port name="ValidationProcessPort"
    		binding="tns:ValidationProcessBinding">
    		<soap:address
    			location="http://arrigo-dev:8081/ode/ValidationProcess" />
    	</port>
    </service>
    <service name="NotiferWS">
    	<port name="NotifierPort" binding="tns:NotifierPTBinding">
    		<soap:address location="http://arrigo-dev:8081/ode/Notifier" />
    	</port>
    </service>
<p2:partnerLinkType name="NotificationPLT">
	<p2:role portType="n:NotifierPT" name="NotifierRole"></p2:role>
	<p2:role portType="n:NotifiedPT" name="NotifiedRole"></p2:role></p2:partnerLinkType></definitions>