You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by Jiang Liu <S3...@student.rmit.edu.au> on 2007/03/01 02:04:45 UTC

Asynchronous service invocation question

Hi BPEL experts,

I do apologize if this is not the place to ask any BPEL general questions. :-)

I get quite confused about asynchronous service invocations, here are my questions, They might be out of scope for Ode, anyway, i really want to get clear of the whole picture.

1), in partner link, any "myRole" is (supposed to) implemented by BPEL with BPEL service's concrete EPR, any "partnerRole" is (supposed to) implemented by external services with service's EPR, am I right?

2), say in a BPEL process it makes asynchronous invocation to an external Web service (not another BPEL service, just a simple service). BPEL applies callback role, service for call role respectively. When BPEL invokes service's call, how exactly the service can callback to BPEL? I mean since the callback is defined as "myRole" and must be implemented by BPEL, in service's skeleton, there is no logic for callback operation. When external service finish the long-term function, he will call back to BPEL immediately? or 5 mins later or blah blah? And how does service knows BPEL's EPR? This seems like it has lots of "secrets" behind. :)

I know call/callback is "packed" from partner links's perspective, also in Ode it requires concrete bindings in configuration file, but for external service's perspective, how actually it works? 
I think this is even more complex when we have service skeleton and stub generated and functioned seperately.

Really appreciate for your reply!!
------------------------------
Jiang Liu
Student Number: 3075163
CS/Yallara Name: ljiang
RMIT, Melbourne

Re: Asynchronous service invocation question

Posted by Jim Alateras <ji...@comware.com.au>.
Jiang Liu wrote:
> Hi BPEL experts,
> 
> I do apologize if this is not the place to ask any BPEL general questions. :-)
> 
> I get quite confused about asynchronous service invocations, here are my questions, They might be out of scope for Ode, anyway, i really want to get clear of the whole picture.
> 
> 1), in partner link, any "myRole" is (supposed to) implemented by BPEL with BPEL service's concrete EPR, any "partnerRole" is (supposed to) implemented by external services with service's EPR, am I right?
> 
> 2), say in a BPEL process it makes asynchronous invocation to an external Web service (not another BPEL service, just a simple service). BPEL applies callback role, service for call role respectively. When BPEL invokes service's call, how exactly the service can callback to BPEL? I mean since the callback is defined as "myRole" and must be implemented by BPEL, in service's skeleton, there is no logic for callback operation. When external service finish the long-term function, he will call back to BPEL immediately? or 5 mins later or blah blah? And how does service knows BPEL's EPR? This seems like it has lots of "secrets" behind. :)
> 
> I know call/callback is "packed" from partner links's perspective, also in Ode it requires concrete bindings in configuration file, but for external service's perspective, how actually it works? 
> I think this is even more complex when we have service skeleton and stub generated and functioned seperately.
I am taking a stab here but I suspect that WS-Addressing is used and the 
Reply-To element is set with the EPR that the external service should 
use for the callback.

cheers
</jima>


Re: Asynchronous service invocation question

Posted by Alex Boisvert <bo...@intalio.com>.
On 2/28/07, Jiang Liu <S3...@student.rmit.edu.au> wrote:
>
> 1), in partner link, any "myRole" is (supposed to) implemented by BPEL
> with BPEL service's concrete EPR, any "partnerRole" is (supposed to)
> implemented by external services with service's EPR, am I right?


Correct.  And process endpoints (myRole) are configurable per partnerLink.

2), say in a BPEL process it makes asynchronous invocation to an external
> Web service (not another BPEL service, just a simple service). BPEL applies
> callback role, service for call role respectively. When BPEL invokes
> service's call, how exactly the service can callback to BPEL? I mean since
> the callback is defined as "myRole" and must be implemented by BPEL, in
> service's skeleton, there is no logic for callback operation. When external
> service finish the long-term function, he will call back to BPEL
> immediately? or 5 mins later or blah blah? And how does service knows BPEL's
> EPR? This seems like it has lots of "secrets" behind. :)


Callbacks are a complex subject because 1) the WS specifications that cover
them are obtuse, abstract and complex, and 2) there's no agreed-upon
interoperability spec to help.

For the time being, Ode implements its own stateful exchange protocol which
was the simplest things that could possibly work without breaking specs and
the WS model.

http://incubator.apache.org/ode/stateful-exchange-protocol.html



I know call/callback is "packed" from partner links's perspective, also in
> Ode it requires concrete bindings in configuration file, but for external
> service's perspective, how actually it works?



I'm not sure I understand you correctly.  Nevertheless, all endpoints must
be bound in Ode's deployment descriptor (deploy.xml) and each endpoint
references a WSDL service + port.

Does that help?

cheers,
alex