Hi,

I developed a BPEL example to test the correlation, and got some strange
result. I designed two receive activities in the process.
When the message type for the second receive activity has only one element
which is alias to the correlation token, the process works well.

<element name="NewOperation">
                <complexType>
                    <sequence>

                        <!-- element name="in" type="string"></element-->
                        <element name="correlator" type="string"></element>
                    </sequence>
                </complexType>
            </element>

However, when i added new elements in addition to the correlation token in
the message type, the process can't receive the input
(that is, no response to the input from the client for the second receive,
and the second receive is not executed according to the observed events from
the ode server)
Could anyone tell me what is wrong? Thanks a lot.

The following is my bpel process and corresponding wsdl file.

<!-- BPELExampleB BPEL Process [Generated by the Eclipse BPEL Designer]  -->
<!-- Date: Wed Jun 30 22:19:19 EDT 2010 -->

<bpel:process name="BPELExampleB"
         targetNamespace="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
         suppressJoinFailure="yes"
         xmlns:tns="http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
         xmlns:bpel="
http://docs.oasis-open.org/wsbpel/2.0/process/executable";
         >
    <!-- Import the client WSDL -->
    <bpel:import location="BPELExampleBArtifacts.wsdl" namespace="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
            importType="http://schemas.xmlsoap.org/wsdl/"; />

    <!-- =================================================================
-->
    <!-- PARTNERLINKS
-->
    <!-- List of services participating in this BPEL process
-->
    <!-- =================================================================
-->
    <bpel: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.
        -->
        <bpel:partnerLink name="client"
                     partnerLinkType="tns:BPELExampleB"
                     myRole="BPELExampleBProvider"
                     />
    </bpel:partnerLinks>

    <!-- =================================================================
-->
    <!-- VARIABLES
-->
    <!-- List of messages and XML documents used within this BPEL process
-->
    <!-- =================================================================
-->
    <bpel:variables>
        <!-- Reference to the message passed as input during initiation -->
        <bpel:variable name="input"

messageType="tns:BPELExampleBRequestMessage"/>


        <bpel:variable name="clientRequest"
messageType="tns:NewOperationRequest"></bpel:variable>
    </bpel:variables>

     <bpel:correlationSets>
        <bpel:correlationSet name="CorrelationSetToken"
properties="tns:token"/>
    </bpel:correlationSets>

    <!-- =================================================================
-->
    <!-- ORCHESTRATION LOGIC
-->
    <!-- Set of activities coordinating the flow of messages across the
-->
    <!-- services integrated within this business process
-->
    <!-- =================================================================
-->
    <bpel:sequence name="main">

        <!-- Receive input from requestor.
             Note: This maps to operation defined in BPELExampleB.wsdl
             -->
        <bpel:receive name="receiveInput" partnerLink="client"
                 portType="tns:BPELExampleB"
                 operation="initiate" variable="input"
                 createInstance="yes">
            <bpel:correlations>
                <bpel:correlation initiate="yes" set="CorrelationSetToken"/>
            </bpel:correlations>
        </bpel:receive>

        <!-- Asynchronous callback to the requester.
             Note: the callback location and correlation id is transparently
handled
             using WS-addressing.
             -->
        <bpel:receive name="Receive" partnerLink="client"
operation="NewOperation" portType="tns:BPELExampleB"
variable="clientRequest">
            <bpel:correlations>
                <bpel:correlation initiate="no" set="CorrelationSetToken"/>
            </bpel:correlations>
        </bpel:receive>
    </bpel:sequence>
</bpel:process>


<?xml version="1.0"?>
<definitions name="BPELExampleB"
        targetNamespace="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
        xmlns:tns="http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
        xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype";
        xmlns="http://schemas.xmlsoap.org/wsdl/";
        xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/varprop";
        xmlns:p="http://www.w3.org/2001/XMLSchema"; xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/";>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     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.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->

    <bpws:property name="token" type="p:string"/>
    <bpws:propertyAlias propertyName="tns:token"
messageType="tns:BPELExampleBRequestMessage" part="payload"
          query="/tns:BPELExampleBRequest/tns:correlator"/>
    <bpws:propertyAlias propertyName="tns:token"
messageType="tns:NewOperationRequest" part="parameters"
          query="/tns:NewOperation/tns:correlator"/>

    <types>
        <schema attributeFormDefault="unqualified"
                elementFormDefault="qualified"
                targetNamespace="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB";
                xmlns="http://www.w3.org/2001/XMLSchema";
                >

            <element name="BPELExampleBRequest">
                <complexType>
                    <sequence>

                        <element name="correlator" type="string"></element>
                    </sequence>
                </complexType>
            </element>

            <element name="BPELExampleBResponse">
                <complexType>
                    <sequence>
                        <element name="result" type="string"/>
                    </sequence>
                </complexType>
            </element>

            <element name="NewOperation">
                <complexType>
                    <sequence>

                        <!-- element name="in" type="string"></element-->
                        <element name="correlator" type="string"></element>
                    </sequence>
                </complexType>
            </element>

        </schema>
    </types>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     MESSAGE TYPE DEFINITION - Definition of the message types used as
     part of the port type defintions
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
    <message name="BPELExampleBRequestMessage">
        <part name="payload" element="tns:BPELExampleBRequest"/>
    </message>

    <message name="NewOperationRequest">
        <part name="parameters" element="tns:NewOperation"></part>
    </message>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PORT TYPE DEFINITION - A port type groups a set of operations into
     a logical service unit.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
    <!-- portType implemented by the BPELExampleB BPEL process -->

    <portType name="BPELExampleB">
        <operation name="initiate">
            <input message="tns:BPELExampleBRequestMessage"/>
        </operation>
        <operation name="NewOperation">
            <input message="tns:NewOperationRequest"></input>

        </operation>
    </portType>




<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PARTNER LINK TYPE DEFINITION
         the BPELExampleB partnerLinkType binds the provider and
         requester portType into an asynchronous conversation.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
    <plnk:partnerLinkType name="BPELExampleB">
        <plnk:role name="BPELExampleBProvider"
portType="tns:BPELExampleB"/>
    </plnk:partnerLinkType>
    <binding name="BPELExampleBBinding" type="tns:BPELExampleB">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http"; />
        <operation name="initiate">
            <soap:operation
                soapAction="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB/initiate"; />
            <input>
                <soap:body use="literal" />
            </input>
        </operation>
        <operation name="NewOperation">
            <soap:operation
                soapAction="
http://msrg.eecg.utoronto.ca/EventExposure/BPELExampleB/NewOperation"; />
            <input>
                <soap:body use="literal" />
            </input>
        </operation>
    </binding>
    <service name="BPELExampleB">
        <port name="BPELExampleB" binding="tns:BPELExampleBBinding">
            <soap:address location="
http://localhost:8080/ode/processes/BPELExampleB"; />
        </port>
    </service>
</definitions>

Reply via email to