<wizard-template xmlns="foo">
    
    <description name="Asynchronous BPEL Process">
Generates an empty BPEL process. Only receive and reply activities are 
placed in the process body. The caller will resume execution as soon as the receive 
activity is performed by the BPEL process. The caller will be notified asynchronously 
when the process completes. A client interface is generated.
    </description>
    
    <!--  Contributing namespaces  -->
    <namespaces kind="inclusive">
	    <namespace uri="http://eclipse.org/bpel/sample"/>
	    <namespace uri="http://sample.bpel.org/bpel/sample"/>
    </namespaces>

    <!--  Which resources are created as a result of the template ? -->    
    <resource name="${processName}.bpel" type="text/xml">
<!-- ${processName} BPEL Process [Generated by the Eclipse BPEL Designer]  -->
<!-- Date: ${date} -->

<process name="${processName}"
         targetNamespace="${namespace}"
         suppressJoinFailure="yes"
         xmlns:tns="${namespace}"
         xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
         >

    <!-- ================================================================= -->         
    <!-- PARTNERLINKS                                                      -->
    <!-- List of services participating in this BPEL process               -->
    <!-- ================================================================= -->         
    <partnerLinks>
        <!--
        The 'client' role represents the requester of this service. It is 
        used for callback. The location and correlation information associated
        with the client role are automatically set using WS-Addressing.
        -->
        <partnerLink name="client"
                     partnerLinkType="tns:${processName}"
                     myRole="${processName}Provider"
                     partnerRole="${processName}Requester"
                     />
    </partnerLinks>
  
    <!-- ================================================================= -->         
    <!-- VARIABLES                                                         -->
    <!-- List of messages and XML documents used within this BPEL process  -->
    <!-- ================================================================= -->         
    <variables>
        <!-- Reference to the message passed as input during initiation -->
        <variable name="input"
                  messageType="tns:${processName}RequestMessage"/>
                  
        <!-- Reference to the message that will be sent back to the 
             requester during callback
             -->
        <variable name="output"
                  messageType="tns:${processName}ResponseMessage"/>
    </variables>

    <!-- ================================================================= -->         
    <!-- ORCHESTRATION LOGIC                                               -->
    <!-- Set of activities coordinating the flow of messages across the    -->
    <!-- services integrated within this business process                  -->
    <!-- ================================================================= -->         
    <sequence name="main">
        
        <!-- Receive input from requestor. 
             Note: This maps to operation defined in ${processName}.wsdl 
             -->
        <receive name="receiveInput" partnerLink="client"
                 portType="tns:${processName}"
                 operation="initiate" variable="input"
                 createInstance="yes"/>
        
        <!-- Asynchronous callback to the requester.
             Note: the callback location and correlation id is transparently handled 
             using WS-addressing.
             -->
        <invoke name="callbackClient" 
                partnerLink="client"
                portType="tns:${processName}Callback"
                operation="onResult" 
                inputVariable="output"
                />
    </sequence>
</process>


    </resource>    
        
    <resource name="${processName}.wsdl" type="text/xml">
<definitions name="${processName}"
        targetNamespace="${namespace}"
        xmlns:tns="${namespace}"
        xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
        xmlns="http://schemas.xmlsoap.org/wsdl/"
        >

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     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.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <types>  
        <schema attributeFormDefault="unqualified" 
                elementFormDefault="qualified" 
                targetNamespace="${namespace}" 
                xmlns="http://www.w3.org/2001/XMLSchema"
                >
                
            <element name="${processName}Request">
                <complexType>
                    <sequence>
                        <element name="input" type="string" />
                    </sequence>
                </complexType>
            </element>
                  
            <element name="${processName}Response">
                <complexType>
                    <sequence>
                        <element name="result" type="string"/>
                    </sequence>
                </complexType>
            </element>
            
        </schema>
    </types>
  
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     MESSAGE TYPE DEFINITION - Definition of the message types used as 
     part of the port type defintions
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <message name="${processName}RequestMessage">
        <part name="payload" element="tns:${processName}Request"/>
    </message>
    
    <message name="${processName}ResponseMessage">
        <part name="payload" element="tns:${processName}Response"/>
    </message>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PORT TYPE DEFINITION - A port type groups a set of operations into
     a logical service unit.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- portType implemented by the ${processName} BPEL process -->
    <portType name="${processName}">
        <operation name="initiate">
            <input message="tns:${processName}RequestMessage"/>
        </operation>
    </portType>

    <!-- portType implemented by the requester of ${processName} BPEL process 
         for asynchronous callback purposes
         -->
    <portType name="${processName}Callback">
        <operation name="onResult">
            <input message="tns:${processName}ResponseMessage"/>
        </operation>
    </portType>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PARTNER LINK TYPE DEFINITION
         the ${processName} partnerLinkType binds the provider and
         requester portType into an asynchronous conversation.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <plnk:partnerLinkType name="${processName}">
        <plnk:role name="${processName}Provider">
            <plnk:portType name="tns:${processName}"/>
        </plnk:role>
        <plnk:role name="${processName}Requester">
            <plnk:portType name="tns:${processName}Callback"/>
        </plnk:role>
    </plnk:partnerLinkType>   
</definitions>

    </resource>

</wizard-template>