X

BPEL Correlation within FlowN

Ramkumar Menon
Director, Product Strategy

I was struggling a bit today while testing a simple process that does a flowN and does simple BPEL correlation..

Failed to evaluate correlation query.
Failed to evaluate the correlationAlias query "/client:FlowNCorrelationDemoEvent/client:id" on the element "oracle.xml.parser.v2.XMLElement@283a35b"
Please check your BPEL/WSDL source to make sure that property alias is defined correctly.

    at com.collaxa.cube.engine.delivery.CorrelationProperty.setMessagePart(CorrelationProperty.java:85)
    at com.collaxa.cube.engine.delivery.DeliveryHelper.createCorrelationSet(DeliveryHelper.java:140)
    at com.collaxa.cube.engine.delivery.SOAPProtocolHandler.calculateCorrelations(SOAPProtocolHandler.java:751)
    at com.collaxa.cube.engine.delivery.SOAPProtocolHandler.receiveCallback(SOAPProtocolHandler.java:167)
    at com.collaxa.cube.engine.delivery.DeliveryService.receiveCallback(DeliveryService.java:462)
    at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.receiveCallback(CubeDeliveryBean.java:108)
    at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean_yt19iq_ELOImpl.receiveCallback(CubeDeliveryBean_yt19iq_ELOImpl.java:307)
    at com.collaxa.cube.engine.delivery.DeliveryHandler.continuePostAnyType(DeliveryHandler.java:429)
    at com.collaxa.cube.engine.delivery.DeliveryHandler.continuePost(DeliveryHandler.java:380)
    at com.collaxa.cube.engine.delivery.DeliveryHandler.post(DeliveryHandler.java:93)
    at com.collaxa.cube.ejb.impl.DeliveryBean.post(DeliveryBean.java:203)
    at com.collaxa.cube.ejb.impl.DeliveryBean.post(DeliveryBean.java:158)
    at com.collaxa.cube.ejb.impl.DeliveryBean_uhics8_EOImpl.post(DeliveryBean_uhics8_EOImpl.java:279)

It seems that the issue was occuring when I was initiating the process that contains a midprocess receive that is based off an operation in the same portType that contains the initiating operation for the service, through the BPEL console.

<portType name="FlowNCorrelationDemo">
    <operation name="initiate">
        <input message="client:FlowNCorrelationDemoRequestMessage"/>
    </operation>
    <operation name="callback">
        <input message="client:FlowNCorrelationDemoEventMessage"/>
    </operation>
</portType>

Things worked just fine when I created another BPEL process and invoked this main BPEL process from the former.

You can find the set of BPEL processes, together with a readme file at http://blogs.oracle.com/rammenon/FlowNCorrelationDemo.zip.

You can find all the information about the services that I have used in the sample at the above URL.

1. Initiate the client service. The client service invokes the main service with the given payload.

initiate_client

2. Review the flow of main service. It should be waiting for the callbacks from within the flowN.

main_service_waiting_for_callback

3. Invoke the ReaderService [the service that calls back the main service] with one callback message.

reader_service_invoke

4. Review the flow of the main service. It should have received one callback.

 

main_service_recvd_one_callback

 

5. Submit the remaining messages from the ReaderService to complete the entire flow. The main process should complete execution following this.

 

main_service_recvd_all_callbacks

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha