ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jiang Liu" <S3075...@student.rmit.edu.au>
Subject Re: Re: Re: Re: Re: Asynchronous service invocation question
Date Fri, 02 Mar 2007 02:20:24 GMT


-----Original Message-----
From: "Alex Boisvert" <boisvert@intalio.com>
To: ode-dev@incubator.apache.org
Date: Thu, 1 Mar 2007 10:40:15 -0800
Subject: Re: Re: Re: Re: Asynchronous service invocation question

On 2/28/07, Jiang Liu <S3075163@student.rmit.edu.au> wrote:
>
> For static, for example, say in my consumer service WSDL, the callback
> protType is defined as "myRole" in partner links definitions, which means
> consumer is not responsable for implementing this "callback" portType in its
> skeleton, its BPEL's responsibility.
>
> BPEL implements it by adding a <receive> to create a thread listening to
> it; on the other hand, consumer only implements "partnerRole" portTypes. Say
> if i have a "call" partnerRole in consumer side, when consumer receives
> message from BPEL, it starts processing the message. After a "long" while,
> the process is done, then what? Because in consumer's skeleton, it only
> implements "call" not "callback".



Jiang, could you provide an example of the interaction you have in mind?
(BPEL pseudocode would work)  It would help me better understand what you're
trying to do.

alex



Hi Alex,
Thanks for your reply. For example, I have a external service WSDL:

<definition ...>
   <schema ...>
   ...
   <portType name="call" ...>
      ...
   <portType name="callback">
      ...
   <binding>
      ...
   <service>
      <port name="callEPR" ...>
      <port name="callbackEPR" ...>

   <partnerLink name="servicePL>
      <role name="call_PL" ...>
      <role name="callback_PL" ...>
   ...
</definition>

A simple BPEL consume this service:

<process ...>
   <partnerLinkTypes>
         ...
         <partnerLinkType>
            <myRole ="callback_PL" ...>
            <partnerRole="call_PL" ...>
   </partnerLinkTypes>
   ...
   <invoke partnerLinkType="call_PL" ...>
      ...
   <receive partnerLinkType="callback_PL" ...>
      ...
   ...
</process>

Sorry the grammar is not strictly followed. :)

Suppose that i implement the external service by using Axis2, when using WSDL2Java to generate
service skeleton, what i have to do is filling in the "call" portType's business logic, for
example:

class ExternalServiceSkeleton {
   //...
   void simpleMethodFromCallPT(String input) {
      //just say input is a String
      //here do some work, e.g. database functions
      /*
        *now the work is done. should i implement callback?
        *if its not and BPEL is "receving" at the other side, how
        *could the callback be performed?
      */
   }
  //...
}

You see the problem is at external service's skeleton, since its not required to implement
"callback" portType, then how the BPEL can receive callback message?

WS-Addressing covers reply-to address which helps for stateful EPR, but I am not quite sure
about the internal stateful connection mechanisms between BPEL and partner services.

Thanks so much for giving me so many advices :)



------------------------------
Jiang Liu
Student Number: 3075163
CS/Yallara Name: ljiang
RMIT, Melbourne

Mime
View raw message