Latest Posts


Show last 6 hrs - 24 hrs - 7 days

Forum tags


Top Posters

Last 30 days

  • Antoine (38)
  • ravinderjit.singh (30)
  • danielandross (18)
  • venkaiah.k (16)
  • sirswendu.ganapati (14)
  • eva.das (13)
  • milos.vacek (12)
  • metabyte (9)
  • dfrench (5)
  • richard.berger (5)

All time

  • Antoine (1488)
  • Shivanand (1194)
  • cshekhar (928)
  • psq (796)
  • jag (391)
  • metabyte (380)
  • arnaud (328)
  • jalateras (325)
  • dfrench (271)
  • venkaiah.k (214)

Show last 4 hrs - 12 hrs - 24 hrs

POLL

We are looking for more information to tailor our training to better meet the needs of our customers. Please indicate all options that apply.

I would like to attend specialized training from Intalio on BPM as it relates to my application area:


I would like to attend specialized training from Intalio on BPM as it relates to my job function:


I would like to attend specialized training from Intalio on BPM as it relates to my industry:

Login

MAIN arrow FORUMS
Asynchronous response/explicit correlation (0 viewing) 
Go to bottom Post Reply Favoured: 0
TOPIC: Asynchronous response/explicit correlation
#16058
m.dale (User)
Fresh Boarder
User Offline Click here to see the profile of this user
Asynchronous response/explicit correlation 3 Months, 3 Weeks ago Karma: 0  
Hello,
(2nd try - the first message yesterday resulted in errors because the attachments were too large)

BPEL Newbie. I am trying to model an asynchronous process using explicit correlation to facilitate the callback.I tried to adapt the Explicit correlation sample
to correlate on business data (retrieval id) but get the following error on invocation after a successful deployment:


14:22:20,485 ERROR [PICK] org.apache.ode.bpel.common.FaultException: Correlation not initialized.
14:22:30,206 WARN [ODEAxisDispatcher] No operation has been found!


I thought I was initializing the correlation (see steps below) but I must be doing something wrong or
left something out. Any help would be very much appreciated! Project is attached.

Overall process:


  1. Client invokes data process via xform by providing a last name and first name

  2. The data process synchronously invokes an external web services to retrieve the balance and gets a
    retrieval id that will be used to explicitly correlate the result when it gets returned
    (potentially much later)

  3. The data process notifies the client of the retrieval id/retrieval status and in parallel
    waits to receive the correlated retrieval result.

  4. The client is notified of the result.



Explicit correlation steps:

  1. Declare BPEL property for retrievalId under Data Editor, right-hand side, DataProcess, DataProcess namespace:
    <vprop:property name="RetrievalId" type="xs:string">

  2. On Data Editor, left-hand side, Data Process, declarations, create a correlation set for Retrieval Id
    <bpel:correlationSet name="RetrievalId-corr" properties="this:RetrievalId">

  3. Data Process/declarations, $tnsRetrievalInitResponseMsg RetrievalInitResponse RetrievalId Text created
    BPEL alias for RetrievalId
    <vprop:propertyAlias propertyName="this:RetrievalId" messageType="tns:RetrievalInitResponse" part="RetrievalInitResponse">
    <vprop:query>RetrievalId/text()</vprop:query>
    </vprop:propertyAlias>

  4. Data Process/declarations, $thisGet_Retrieval_ResultRequestMsg body RetrievalId Text created BPEL alias
    for RetrievalId
    <vprop:propertyAlias propertyName="this:RetrievalId" messageType="this:Get_Retrieval_ResultRequest" part="body">
    <vprop:query>RetrievalId/text()</vprop:query>
    </vprop:propertyAlias>

  5. Data Process/sequence, Initialize Retrieval incoming for $tnsRetrievalInitResponseMsg dragged and dropped
    correlation set from declarations and set initiate to yes (first incoming)
    <bpel:correlation set="RetrievalId-corr" initiate="yes"></bpel:correlation>

  6. Data Process/sequence, first Gateway Parallel, Flow, second sequence, Get Retrieval Result, incoming for
    $thisGet_Retrieval_ResultRequestMsg, dnd correlation set from declarations and set initiate to no

    <bpel:correlation set="RetrievalId-corr" initiate="no"></bpel:correlation>



I tried to explicitly correlate after being unable to invoke the Get Retrieval Result via SoapUI (from the
build/processes/DataProcess-DataProcess.wsdl) and getting the following error so maybe there are some other
issues. Is that the right WSDL location?

13:23:25,598 ERROR [ODEService] Timeout or execution error when waiting for response to MEX {MyRoleMex#65562 [Client fac0d4ae-f6b3-48c6-838f-80ace03815fd-7] calling {http://example.com/processes/DataProcess/DataProcess}CanonicServiceForData.Get_Retrieval_Result(...)} java.util.concurrent.TimeoutException: Message exchange org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl$ResponseFuture@3d67a7 timed out when waiting for a response!


I searched the forums but didn't find anything related. Any pointers/help would be very much appreciated.

Thanks for your help,
Markus
File Attachment:
File Name: data-5b3d6ff1af091d56fdbad9701dff6c84.jar
File Size: 29984
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#16328
david.dabney (User)
Fresh Boarder
User Offline Click here to see the profile of this user
Re:Asynchronous response/explicit correlation 3 Months, 1 Week ago Karma: 1  
Markus,

I think the problem you are running in to is due to the fact that you are not initializing the correlation on the incoming request that starts the process. I may be wrong about that, but I was having similar problems for something I have been doing and once I initiated the correlation set at the beginning of the executable lane, all acted as expected.

So you end up with a chicken or the egg scenario....you need the process running to call the service to get the value you want to correlate on, but it's too late. I got around this by having two executable lanes and had the first lane get the values I wanted to correlate on and then used them on a second executable lane that I can then initiate properly.

The exp. correlation example does not really state it, uh, explicitly, but I think that correlations must be initiated at the start of a process.

Hope this helps,

Dave
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#16331
mriou (User)
Fresh Boarder
User Offline Click here to see the profile of this user
Re:Asynchronous response/explicit correlation 3 Months ago Karma: 0  
Hi,

I agree with David, you're probably missing the correlation initialization. A correlation can be initialized on any receive or invoke but if you want to call back your process, you will need to initialize at least one correlation during the first interaction. It's like if you and I met but I didn't give you my contact address. Even if you remember about me afterward, there's no way you can contact me anymore.

So if I understand your process correctly, you seem to have a receive and then a synchronous invoke with the reply of that invoke containing the value you want to correlate on. In this case you'll need an initiate on the invoke response.

Form on of the errors you reported it's also possible that the message your service provides as a reply to the invocation isn't properly formatted w.r.t its WSDL definition.

Let me know if this helps,

Thanks,
Matthieu
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#16332
m.dale (User)
Fresh Boarder
User Offline Click here to see the profile of this user
Re:Asynchronous response/explicit correlation 3 Months ago Karma: 0  
David and Matthieu,

Thank you very much for your replies. Initializing the correlation on the first invocation (i.e. the invocation from the request form that starts the process) does the trick and the process is now working as expected. I had tried to initialize the correlation with the response from the synchronous web service call (which has the actual retrieval id) but that did not work.

As a workaround, I now have the invoker create a unique id in the XForm but I can use Dave's approach with the id being created in another lane/process. Thanks for sharing!!!

Thank you very much for your help,
Markus
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
Go to top Post Reply
get the latest posts directly to your desktop