You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by sam tam <sa...@gmail.com> on 2006/11/21 13:58:14 UTC

Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Hello People


I have a bpel process with lots of operation ...(say op1 ,op2,op3..opn)

I deployed this bpel process in ODE runtime.

1) Now I want to access but not in  the usual way..

But like this

invoke(process_name,operation_name)...ie
(HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).

How to do so ?

2)
Also PartnerLink :
[ Partner link types represent the interaction between a BPEL process and
the involved parties ]

So every process has a partnerLink or is it like Every operataion in the
Process will have a partnerLink ?


Suppose I deployed the process in the ODE runtime...

Can I get some kind of handle(object) [in java client]  to this partnerLink
[deployed BPEL process's parternlink]  ?

In which class can i get these kind of information ?

Can anyone plz shed some info on this..


Thanx in Advance..


Sam....Tam

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by sam tam <sa...@gmail.com>.
Thank You very much Alex.

So we cannot get a object /handle kind of for  the  partnerLink  in Java.

My question is like this :

I have a process with lots of services. I  deploy it in ODE runtime.
So on deployment ODE returns the QName.

But can I get something else like an interface / object /handle ( kind of
)  for the deployed process with services. [ Thank you Alex but other than
Axis2 / JAX-WS is there any mechanism/method provided by ODE API's..]

Since i can deploy any number of process with any number of services right ?
So I need some kind of handle to catch hold of say Nth Process with M
Service ...

Thank You for reply Alex..But still am little confused.

Plz explain a little bit ..

Thanx in Advance

Sam..Tam..











On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
>
> Hi Sam,
>
> The engine doesn't expose partnerLinks to the outside world, it only
> exposes
> services.  Even the integration layer (IAPI) doesn't know about
> partnerLinks.   It's an implementation detail of the process, if you want.
>
> The contract with the clients is based solely on message exchanges.  From
> the outside of the engine, you trigger operations by sending messages to
> service endpoints.   The operation is inferred by the content of those
> messages and the service endpoint.
>
> e.g. sending a SOAP message with payload <AccountDebit> on
> http://localhost:8080/ode/bankAccount
>
> If you're concerned about simplifying access for Java client, perhaps you
> could look into using JAX-WS or Axis2 client APIs and generating Java
> stubs
> from service descriptions (WSDLs).    Or, alternatively, you could write a
> native integration layer only for Java clients, but that's a lot more work
> and would restrict usage only to Java.
>
> regards,
> alex
>
>
>
>
>
> On 11/21/06, sam tam <sa...@gmail.com> wrote:
> >
> > Thank You for your reply Alex...
> >
> > So partnerLink is kind of interface for the given operation right ?
> >
> > How can i get an object(kind of) or like handle to the partnerLink  in
> > Java
> > ?
> >
> > All use request-response pattern.
> >
> > If I consider the bpel process
> >
> >
> http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel
> >
> > The Process name :HelloWorld2
> > The Operation name : hello
> >              PartnerLink : helloPartnerLink
> >
> > So after your explanation helloPartnerLink is kind of interface right .
> >
> > So from a Java Client can I access the operation "hello" through the
> > partnerLink ?
> > ie Can i get a object / handle (kind of) for this partnerLink in a Java
> > Client.....
> >
> >
> > Thanx in Advance..
> >
> > Sam..Tam...
> >
> >
> >
> >
> >
> >
> >
> >
> > On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
> > >
> > > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > > >
> > > > I have a bpel process with lots of operation ...(say op1
> > ,op2,op3..opn)
> > > >
> > > > I deployed this bpel process in ODE runtime.
> > > >
> > > > 1) Now I want to access but not in  the usual way..
> > > >
> > > > But like this
> > > >
> > > > invoke(process_name,operation_name)...ie
> > > > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> > > >
> > > > How to do so ?
> > >
> > >
> > >
> > > Conceptually in the web service world, an invocation takes a data
> tuple
> > of
> > > {service, port, operation, payload}.  In some cases the operation may
> be
> > > inferred from the message, but it's not a requisite.
> > >
> > > The issue here is that a process may offer multiple services with the
> > same
> > > operation, so you're making some simplifying assumptions if your going
> > to
> > > consider only {process, operation, payload}.
> > >
> > > But if you still want to resolve the operation based solely on the
> > process
> > > type, you'd have to introspect the BPEL definition and iterate through
> > the
> > > various partnerlinks to find the matching one, and after that resolve
> > the
> > > service based on the partnerLink binding in deploy.xml.
> > >
> > > This can be done by the client or by the integration layer, but in
> > either
> > > case you are effectively breaking a number of rules/assumptions about
> > web
> > > services in general.   I'm not so sure it's worth it.
> > >
> > >
> > > 2)
> > > > Also PartnerLink :
> > > > [ Partner link types represent the interaction between a BPEL
> process
> > > and
> > > > the involved parties ]
> > > >
> > > > So every process has a partnerLink or is it like Every operataion in
> > the
> > > > Process will have a partnerLink ?
> > >
> > >
> > >
> > > You can think of partnerLinks as bi-directional interfaces.  Borrowing
> > > from
> > > the Java notation, say you want to model a bank account:
> > >
> > > interface Account {
> > >     double debit( double amount );   // request-response
> > >     double credit( double amount );  // request-response
> > > }
> > >
> > > If all your operations use the request-response message exchange
> > pattern,
> > > then your partnerLinkType is as simple as:
> > >
> > > partnerLinkType AccountPL {
> > >     role "bank" Account;
> > > }
> > >
> > > Here you only need one "bank" role to provide access to the account.
> > >
> > > But what if you want to model your account operations as
> (asynchronous)
> > > one-way exchanges?   You would end up with two interfaces because you
> > need
> > > an additional interface to model the call-backs:
> > >
> > > interface AsyncAccount {
> > >     void debit( double amount );    // one-way
> > >     void credit( double amount );   // one-way
> > > }
> > >
> > > interface AsyncAccountCallback {
> > >     void balance( double amount );   // one-way
> > > }
> > >
> > > and you would introduce a partner role into the partner link type to
> > > represent the customer callback:
> > >
> > > partnerLinkType AsyncAccountPL {
> > >     role "bank" AsyncAccount;
> > >     role "customer"  AsyncAccountCallback;
> > > }
> > >
> > > I hope that helps you better understand partnerLinks.
> > >
> > > alex
> > >
> > >
> >
> >
>
>

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by sam tam <sa...@gmail.com>.
Thank You Alex and Matthieu.. for you kind reply...


Sam Tam...





On 11/22/06, Matthieu Riou <ma...@gmail.com> wrote:
>
> Sam,
>
> The interface you're looking for is not the one for a process or for a
> partner link. The engine takes care of doing the routing for you, finding
> the correct process to execute and using the correct partner link from the
> message you will provide it (plus a couple of additional information).
>
> As I mentioned before the way to give your message to the engine is by
> building a message exchange. If you build a message exchange, give it your
> message and the operation you're calling and invoke the message exchange,
> all the necessary routing will happen behind the scene.
>
> You can find an example of this construction and invocation in the
> BPELTest
> class, in the run method. You'll see that a MyRoleMessageExchange is built
> and then invoked and that's where the engine starts running. Reuse the
> same
> type of declaration and you should be set. Just be careful to follow the
> same message format (<message><part>...</part></message>).
>
> Hope this helps...
>
> Matthieu
>
> On 11/21/06, sam tam <sa...@gmail.com> wrote:
> >
> > Thank You very much Alex.
> >
> > So we cannot get a object /handle kind of for  the  partnerLink  in
> Java.
> >
> > My question is like this :
> >
> > I have a process with lots of services. I  deploy it in ODE runtime.
> > So on deployment ODE returns the QName.
> >
> > But can i get something else like an interface / object ( kind of  ) for
> > the
> > deployed process
> > with services. [ Thank you Alex but other than Axis2 / JAX-WS is there
> any
> > mechanism/method provided by ODE API's..]
> >
> > Since i can deploy any number of process with any number of services
> right
> > ?
> > So I need some kind of handle to catch hold of say Nth Process with M
> > Service ...
> >
> > Thank You for reply Alex..But still am little confused.
> >
> > Plz explain a little bit ..
> >
> > Thanx in Advance
> >
> > Sam..Tam..
> >
> >
> >
> >
> >
> > On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
> > >
> > > Hi Sam,
> > >
> > > The engine doesn't expose partnerLinks to the outside world, it only
> > > exposes
> > > services.  Even the integration layer (IAPI) doesn't know about
> > > partnerLinks.   It's an implementation detail of the process, if you
> > want.
> > >
> > >
> > > The contract with the clients is based solely on message
> > exchanges.  From
> > > the outside of the engine, you trigger operations by sending messages
> to
> > > service endpoints.   The operation is inferred by the content of those
> > > messages and the service endpoint.
> > >
> > > e.g. sending a SOAP message with payload <AccountDebit> on
> > > http://localhost:8080/ode/bankAccount
> > >
> > > If you're concerned about simplifying access for Java client, perhaps
> > you
> > > could look into using JAX-WS or Axis2 client APIs and generating Java
> > > stubs
> > > from service descriptions (WSDLs).    Or, alternatively, you could
> write
> > a
> > > native integration layer only for Java clients, but that's a lot more
> > work
> > >
> > > and would restrict usage only to Java.
> > >
> > > regards,
> > > alex
> > >
> > >
> > >
> > >
> > >
> > > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > > >
> > > > Thank You for your reply Alex...
> > > >
> > > > So partnerLink is kind of interface for the given operation right ?
> > > >
> > > > How can i get an object(kind of) or like handle to the
> partnerLink  in
> > > > Java
> > > > ?
> > > >
> > > > All use request-response pattern.
> > > >
> > > > If I consider the bpel process
> > > >
> > > >
> >
> http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel
> > >
> > > >
> > > > The Process name :HelloWorld2
> > > > The Operation name : hello
> > > >              PartnerLink : helloPartnerLink
> > > >
> > > > So after your explanation helloPartnerLink is kind of interface
> right
> > .
> > > >
> > > > So from a Java Client can I access the operation "hello" through the
> > > > partnerLink ?
> > > > ie Can i get a object / handle (kind of) for this partnerLink in a
> > Java
> > > > Client.....
> > > >
> > > >
> > > > Thanx in Advance..
> > > >
> > > > Sam..Tam...
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On 11/21/06, Alex Boisvert <boisvert@intalio.com > wrote:
> > > > >
> > > > > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > > > > >
> > > > > > I have a bpel process with lots of operation ...(say op1
> > > > ,op2,op3..opn)
> > > > > >
> > > > > > I deployed this bpel process in ODE runtime.
> > > > > >
> > > > > > 1) Now I want to access but not in  the usual way..
> > > > > >
> > > > > > But like this
> > > > > >
> > > > > > invoke(process_name,operation_name)...ie
> > > > > > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> > > > > >
> > > > > > How to do so ?
> > > > >
> > > > >
> > > > >
> > > > > Conceptually in the web service world, an invocation takes a data
> > > tuple
> > > > of
> > > > > {service, port, operation, payload}.  In some cases the operation
> > may
> > > be
> > > > > inferred from the message, but it's not a requisite.
> > > > >
> > > > > The issue here is that a process may offer multiple services with
> > the
> > > > same
> > > > > operation, so you're making some simplifying assumptions if your
> > going
> > > > to
> > > > > consider only {process, operation, payload}.
> > > > >
> > > > > But if you still want to resolve the operation based solely on the
> > > > process
> > > > > type, you'd have to introspect the BPEL definition and iterate
> > through
> > > > the
> > > > > various partnerlinks to find the matching one, and after that
> > resolve
> > > > the
> > > > > service based on the partnerLink binding in deploy.xml.
> > > > >
> > > > > This can be done by the client or by the integration layer, but in
> > > > either
> > > > > case you are effectively breaking a number of rules/assumptions
> > about
> > > > web
> > > > > services in general.   I'm not so sure it's worth it.
> > > > >
> > > > >
> > > > > 2)
> > > > > > Also PartnerLink :
> > > > > > [ Partner link types represent the interaction between a BPEL
> > > process
> > > > > and
> > > > > > the involved parties ]
> > > > > >
> > > > > > So every process has a partnerLink or is it like Every
> operataion
> > in
> > > > the
> > > > > > Process will have a partnerLink ?
> > > > >
> > > > >
> > > > >
> > > > > You can think of partnerLinks as bi-directional
> > interfaces.  Borrowing
> > > > > from
> > > > > the Java notation, say you want to model a bank account:
> > > > >
> > > > > interface Account {
> > > > >     double debit( double amount );   // request-response
> > > > >     double credit( double amount );  // request-response
> > > > > }
> > > > >
> > > > > If all your operations use the request-response message exchange
> > > > pattern,
> > > > > then your partnerLinkType is as simple as:
> > > > >
> > > > > partnerLinkType AccountPL {
> > > > >     role "bank" Account;
> > > > > }
> > > > >
> > > > > Here you only need one "bank" role to provide access to the
> account.
> > > > >
> > > > > But what if you want to model your account operations as
> > > (asynchronous)
> > > > > one-way exchanges?   You would end up with two interfaces because
> > you
> > > > need
> > > > > an additional interface to model the call-backs:
> > > > >
> > > > > interface AsyncAccount {
> > > > >     void debit( double amount );    // one-way
> > > > >     void credit( double amount );   // one-way
> > > > > }
> > > > >
> > > > > interface AsyncAccountCallback {
> > > > >     void balance( double amount );   // one-way
> > > > > }
> > > > >
> > > > > and you would introduce a partner role into the partner link type
> to
> > > > > represent the customer callback:
> > > > >
> > > > > partnerLinkType AsyncAccountPL {
> > > > >     role "bank" AsyncAccount;
> > > > >     role "customer"  AsyncAccountCallback;
> > > > > }
> > > > >
> > > > > I hope that helps you better understand partnerLinks.
> > > > >
> > > > > alex
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
> > --
> > Catch Me @: www.samjeyam.co.nr
> >
> > The Engine is the Heart of the Plane
> >    but
> >        Pilot is the Soul...
> >
> > \___(0)___/
> >       ./ \.
> >
> >
>
>


-- 
Catch Me @: www.samjeyam.co.nr

The Engine is the Heart of the Plane
   but
       Pilot is the Soul...

\___(0)___/
      ./ \.

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by Matthieu Riou <ma...@gmail.com>.
Sam,

The interface you're looking for is not the one for a process or for a
partner link. The engine takes care of doing the routing for you, finding
the correct process to execute and using the correct partner link from the
message you will provide it (plus a couple of additional information).

As I mentioned before the way to give your message to the engine is by
building a message exchange. If you build a message exchange, give it your
message and the operation you're calling and invoke the message exchange,
all the necessary routing will happen behind the scene.

You can find an example of this construction and invocation in the BPELTest
class, in the run method. You'll see that a MyRoleMessageExchange is built
and then invoked and that's where the engine starts running. Reuse the same
type of declaration and you should be set. Just be careful to follow the
same message format (<message><part>...</part></message>).

Hope this helps...

Matthieu

On 11/21/06, sam tam <sa...@gmail.com> wrote:
>
> Thank You very much Alex.
>
> So we cannot get a object /handle kind of for  the  partnerLink  in Java.
>
> My question is like this :
>
> I have a process with lots of services. I  deploy it in ODE runtime.
> So on deployment ODE returns the QName.
>
> But can i get something else like an interface / object ( kind of  ) for
> the
> deployed process
> with services. [ Thank you Alex but other than Axis2 / JAX-WS is there any
> mechanism/method provided by ODE API's..]
>
> Since i can deploy any number of process with any number of services right
> ?
> So I need some kind of handle to catch hold of say Nth Process with M
> Service ...
>
> Thank You for reply Alex..But still am little confused.
>
> Plz explain a little bit ..
>
> Thanx in Advance
>
> Sam..Tam..
>
>
>
>
>
> On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
> >
> > Hi Sam,
> >
> > The engine doesn't expose partnerLinks to the outside world, it only
> > exposes
> > services.  Even the integration layer (IAPI) doesn't know about
> > partnerLinks.   It's an implementation detail of the process, if you
> want.
> >
> >
> > The contract with the clients is based solely on message
> exchanges.  From
> > the outside of the engine, you trigger operations by sending messages to
> > service endpoints.   The operation is inferred by the content of those
> > messages and the service endpoint.
> >
> > e.g. sending a SOAP message with payload <AccountDebit> on
> > http://localhost:8080/ode/bankAccount
> >
> > If you're concerned about simplifying access for Java client, perhaps
> you
> > could look into using JAX-WS or Axis2 client APIs and generating Java
> > stubs
> > from service descriptions (WSDLs).    Or, alternatively, you could write
> a
> > native integration layer only for Java clients, but that's a lot more
> work
> >
> > and would restrict usage only to Java.
> >
> > regards,
> > alex
> >
> >
> >
> >
> >
> > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > >
> > > Thank You for your reply Alex...
> > >
> > > So partnerLink is kind of interface for the given operation right ?
> > >
> > > How can i get an object(kind of) or like handle to the partnerLink  in
> > > Java
> > > ?
> > >
> > > All use request-response pattern.
> > >
> > > If I consider the bpel process
> > >
> > >
> http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel
> >
> > >
> > > The Process name :HelloWorld2
> > > The Operation name : hello
> > >              PartnerLink : helloPartnerLink
> > >
> > > So after your explanation helloPartnerLink is kind of interface right
> .
> > >
> > > So from a Java Client can I access the operation "hello" through the
> > > partnerLink ?
> > > ie Can i get a object / handle (kind of) for this partnerLink in a
> Java
> > > Client.....
> > >
> > >
> > > Thanx in Advance..
> > >
> > > Sam..Tam...
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On 11/21/06, Alex Boisvert <boisvert@intalio.com > wrote:
> > > >
> > > > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > > > >
> > > > > I have a bpel process with lots of operation ...(say op1
> > > ,op2,op3..opn)
> > > > >
> > > > > I deployed this bpel process in ODE runtime.
> > > > >
> > > > > 1) Now I want to access but not in  the usual way..
> > > > >
> > > > > But like this
> > > > >
> > > > > invoke(process_name,operation_name)...ie
> > > > > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> > > > >
> > > > > How to do so ?
> > > >
> > > >
> > > >
> > > > Conceptually in the web service world, an invocation takes a data
> > tuple
> > > of
> > > > {service, port, operation, payload}.  In some cases the operation
> may
> > be
> > > > inferred from the message, but it's not a requisite.
> > > >
> > > > The issue here is that a process may offer multiple services with
> the
> > > same
> > > > operation, so you're making some simplifying assumptions if your
> going
> > > to
> > > > consider only {process, operation, payload}.
> > > >
> > > > But if you still want to resolve the operation based solely on the
> > > process
> > > > type, you'd have to introspect the BPEL definition and iterate
> through
> > > the
> > > > various partnerlinks to find the matching one, and after that
> resolve
> > > the
> > > > service based on the partnerLink binding in deploy.xml.
> > > >
> > > > This can be done by the client or by the integration layer, but in
> > > either
> > > > case you are effectively breaking a number of rules/assumptions
> about
> > > web
> > > > services in general.   I'm not so sure it's worth it.
> > > >
> > > >
> > > > 2)
> > > > > Also PartnerLink :
> > > > > [ Partner link types represent the interaction between a BPEL
> > process
> > > > and
> > > > > the involved parties ]
> > > > >
> > > > > So every process has a partnerLink or is it like Every operataion
> in
> > > the
> > > > > Process will have a partnerLink ?
> > > >
> > > >
> > > >
> > > > You can think of partnerLinks as bi-directional
> interfaces.  Borrowing
> > > > from
> > > > the Java notation, say you want to model a bank account:
> > > >
> > > > interface Account {
> > > >     double debit( double amount );   // request-response
> > > >     double credit( double amount );  // request-response
> > > > }
> > > >
> > > > If all your operations use the request-response message exchange
> > > pattern,
> > > > then your partnerLinkType is as simple as:
> > > >
> > > > partnerLinkType AccountPL {
> > > >     role "bank" Account;
> > > > }
> > > >
> > > > Here you only need one "bank" role to provide access to the account.
> > > >
> > > > But what if you want to model your account operations as
> > (asynchronous)
> > > > one-way exchanges?   You would end up with two interfaces because
> you
> > > need
> > > > an additional interface to model the call-backs:
> > > >
> > > > interface AsyncAccount {
> > > >     void debit( double amount );    // one-way
> > > >     void credit( double amount );   // one-way
> > > > }
> > > >
> > > > interface AsyncAccountCallback {
> > > >     void balance( double amount );   // one-way
> > > > }
> > > >
> > > > and you would introduce a partner role into the partner link type to
> > > > represent the customer callback:
> > > >
> > > > partnerLinkType AsyncAccountPL {
> > > >     role "bank" AsyncAccount;
> > > >     role "customer"  AsyncAccountCallback;
> > > > }
> > > >
> > > > I hope that helps you better understand partnerLinks.
> > > >
> > > > alex
> > > >
> > > >
> > >
> > >
> >
> >
>
>
> --
> Catch Me @: www.samjeyam.co.nr
>
> The Engine is the Heart of the Plane
>    but
>        Pilot is the Soul...
>
> \___(0)___/
>       ./ \.
>
>

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by sam tam <sa...@gmail.com>.
Thank You very much Alex.

So we cannot get a object /handle kind of for  the  partnerLink  in Java.

My question is like this :

I have a process with lots of services. I  deploy it in ODE runtime.
So on deployment ODE returns the QName.

But can i get something else like an interface / object ( kind of  ) for the
deployed process
with services. [ Thank you Alex but other than Axis2 / JAX-WS is there any
mechanism/method provided by ODE API's..]

Since i can deploy any number of process with any number of services right ?
So I need some kind of handle to catch hold of say Nth Process with M
Service ...

Thank You for reply Alex..But still am little confused.

Plz explain a little bit ..

Thanx in Advance

Sam..Tam..





On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
>
> Hi Sam,
>
> The engine doesn't expose partnerLinks to the outside world, it only
> exposes
> services.  Even the integration layer (IAPI) doesn't know about
> partnerLinks.   It's an implementation detail of the process, if you want.
>
>
> The contract with the clients is based solely on message exchanges.  From
> the outside of the engine, you trigger operations by sending messages to
> service endpoints.   The operation is inferred by the content of those
> messages and the service endpoint.
>
> e.g. sending a SOAP message with payload <AccountDebit> on
> http://localhost:8080/ode/bankAccount
>
> If you're concerned about simplifying access for Java client, perhaps you
> could look into using JAX-WS or Axis2 client APIs and generating Java
> stubs
> from service descriptions (WSDLs).    Or, alternatively, you could write a
> native integration layer only for Java clients, but that's a lot more work
>
> and would restrict usage only to Java.
>
> regards,
> alex
>
>
>
>
>
> On 11/21/06, sam tam <sa...@gmail.com> wrote:
> >
> > Thank You for your reply Alex...
> >
> > So partnerLink is kind of interface for the given operation right ?
> >
> > How can i get an object(kind of) or like handle to the partnerLink  in
> > Java
> > ?
> >
> > All use request-response pattern.
> >
> > If I consider the bpel process
> >
> > http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel
>
> >
> > The Process name :HelloWorld2
> > The Operation name : hello
> >              PartnerLink : helloPartnerLink
> >
> > So after your explanation helloPartnerLink is kind of interface right .
> >
> > So from a Java Client can I access the operation "hello" through the
> > partnerLink ?
> > ie Can i get a object / handle (kind of) for this partnerLink in a Java
> > Client.....
> >
> >
> > Thanx in Advance..
> >
> > Sam..Tam...
> >
> >
> >
> >
> >
> >
> >
> >
> > On 11/21/06, Alex Boisvert <boisvert@intalio.com > wrote:
> > >
> > > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > > >
> > > > I have a bpel process with lots of operation ...(say op1
> > ,op2,op3..opn)
> > > >
> > > > I deployed this bpel process in ODE runtime.
> > > >
> > > > 1) Now I want to access but not in  the usual way..
> > > >
> > > > But like this
> > > >
> > > > invoke(process_name,operation_name)...ie
> > > > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> > > >
> > > > How to do so ?
> > >
> > >
> > >
> > > Conceptually in the web service world, an invocation takes a data
> tuple
> > of
> > > {service, port, operation, payload}.  In some cases the operation may
> be
> > > inferred from the message, but it's not a requisite.
> > >
> > > The issue here is that a process may offer multiple services with the
> > same
> > > operation, so you're making some simplifying assumptions if your going
> > to
> > > consider only {process, operation, payload}.
> > >
> > > But if you still want to resolve the operation based solely on the
> > process
> > > type, you'd have to introspect the BPEL definition and iterate through
> > the
> > > various partnerlinks to find the matching one, and after that resolve
> > the
> > > service based on the partnerLink binding in deploy.xml.
> > >
> > > This can be done by the client or by the integration layer, but in
> > either
> > > case you are effectively breaking a number of rules/assumptions about
> > web
> > > services in general.   I'm not so sure it's worth it.
> > >
> > >
> > > 2)
> > > > Also PartnerLink :
> > > > [ Partner link types represent the interaction between a BPEL
> process
> > > and
> > > > the involved parties ]
> > > >
> > > > So every process has a partnerLink or is it like Every operataion in
> > the
> > > > Process will have a partnerLink ?
> > >
> > >
> > >
> > > You can think of partnerLinks as bi-directional interfaces.  Borrowing
> > > from
> > > the Java notation, say you want to model a bank account:
> > >
> > > interface Account {
> > >     double debit( double amount );   // request-response
> > >     double credit( double amount );  // request-response
> > > }
> > >
> > > If all your operations use the request-response message exchange
> > pattern,
> > > then your partnerLinkType is as simple as:
> > >
> > > partnerLinkType AccountPL {
> > >     role "bank" Account;
> > > }
> > >
> > > Here you only need one "bank" role to provide access to the account.
> > >
> > > But what if you want to model your account operations as
> (asynchronous)
> > > one-way exchanges?   You would end up with two interfaces because you
> > need
> > > an additional interface to model the call-backs:
> > >
> > > interface AsyncAccount {
> > >     void debit( double amount );    // one-way
> > >     void credit( double amount );   // one-way
> > > }
> > >
> > > interface AsyncAccountCallback {
> > >     void balance( double amount );   // one-way
> > > }
> > >
> > > and you would introduce a partner role into the partner link type to
> > > represent the customer callback:
> > >
> > > partnerLinkType AsyncAccountPL {
> > >     role "bank" AsyncAccount;
> > >     role "customer"  AsyncAccountCallback;
> > > }
> > >
> > > I hope that helps you better understand partnerLinks.
> > >
> > > alex
> > >
> > >
> >
> >
>
>


-- 
Catch Me @: www.samjeyam.co.nr

The Engine is the Heart of the Plane
   but
       Pilot is the Soul...

\___(0)___/
      ./ \.

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by Alex Boisvert <bo...@intalio.com>.
Hi Sam,

The engine doesn't expose partnerLinks to the outside world, it only exposes
services.  Even the integration layer (IAPI) doesn't know about
partnerLinks.   It's an implementation detail of the process, if you want.

The contract with the clients is based solely on message exchanges.  From
the outside of the engine, you trigger operations by sending messages to
service endpoints.   The operation is inferred by the content of those
messages and the service endpoint.

e.g. sending a SOAP message with payload <AccountDebit> on
http://localhost:8080/ode/bankAccount

If you're concerned about simplifying access for Java client, perhaps you
could look into using JAX-WS or Axis2 client APIs and generating Java stubs
from service descriptions (WSDLs).    Or, alternatively, you could write a
native integration layer only for Java clients, but that's a lot more work
and would restrict usage only to Java.

regards,
alex





On 11/21/06, sam tam <sa...@gmail.com> wrote:
>
> Thank You for your reply Alex...
>
> So partnerLink is kind of interface for the given operation right ?
>
> How can i get an object(kind of) or like handle to the partnerLink  in
> Java
> ?
>
> All use request-response pattern.
>
> If I consider the bpel process
>
> http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel
>
> The Process name :HelloWorld2
> The Operation name : hello
>              PartnerLink : helloPartnerLink
>
> So after your explanation helloPartnerLink is kind of interface right .
>
> So from a Java Client can I access the operation "hello" through the
> partnerLink ?
> ie Can i get a object / handle (kind of) for this partnerLink in a Java
> Client.....
>
>
> Thanx in Advance..
>
> Sam..Tam...
>
>
>
>
>
>
>
>
> On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
> >
> > On 11/21/06, sam tam <sa...@gmail.com> wrote:
> > >
> > > I have a bpel process with lots of operation ...(say op1
> ,op2,op3..opn)
> > >
> > > I deployed this bpel process in ODE runtime.
> > >
> > > 1) Now I want to access but not in  the usual way..
> > >
> > > But like this
> > >
> > > invoke(process_name,operation_name)...ie
> > > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> > >
> > > How to do so ?
> >
> >
> >
> > Conceptually in the web service world, an invocation takes a data tuple
> of
> > {service, port, operation, payload}.  In some cases the operation may be
> > inferred from the message, but it's not a requisite.
> >
> > The issue here is that a process may offer multiple services with the
> same
> > operation, so you're making some simplifying assumptions if your going
> to
> > consider only {process, operation, payload}.
> >
> > But if you still want to resolve the operation based solely on the
> process
> > type, you'd have to introspect the BPEL definition and iterate through
> the
> > various partnerlinks to find the matching one, and after that resolve
> the
> > service based on the partnerLink binding in deploy.xml.
> >
> > This can be done by the client or by the integration layer, but in
> either
> > case you are effectively breaking a number of rules/assumptions about
> web
> > services in general.   I'm not so sure it's worth it.
> >
> >
> > 2)
> > > Also PartnerLink :
> > > [ Partner link types represent the interaction between a BPEL process
> > and
> > > the involved parties ]
> > >
> > > So every process has a partnerLink or is it like Every operataion in
> the
> > > Process will have a partnerLink ?
> >
> >
> >
> > You can think of partnerLinks as bi-directional interfaces.  Borrowing
> > from
> > the Java notation, say you want to model a bank account:
> >
> > interface Account {
> >     double debit( double amount );   // request-response
> >     double credit( double amount );  // request-response
> > }
> >
> > If all your operations use the request-response message exchange
> pattern,
> > then your partnerLinkType is as simple as:
> >
> > partnerLinkType AccountPL {
> >     role "bank" Account;
> > }
> >
> > Here you only need one "bank" role to provide access to the account.
> >
> > But what if you want to model your account operations as (asynchronous)
> > one-way exchanges?   You would end up with two interfaces because you
> need
> > an additional interface to model the call-backs:
> >
> > interface AsyncAccount {
> >     void debit( double amount );    // one-way
> >     void credit( double amount );   // one-way
> > }
> >
> > interface AsyncAccountCallback {
> >     void balance( double amount );   // one-way
> > }
> >
> > and you would introduce a partner role into the partner link type to
> > represent the customer callback:
> >
> > partnerLinkType AsyncAccountPL {
> >     role "bank" AsyncAccount;
> >     role "customer"  AsyncAccountCallback;
> > }
> >
> > I hope that helps you better understand partnerLinks.
> >
> > alex
> >
> >
>
>

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by sam tam <sa...@gmail.com>.
Thank You for your reply Alex...

So partnerLink is kind of interface for the given operation right ?

How can i get an object(kind of) or like handle to the partnerLink  in Java
?

All use request-response pattern.

If I consider the bpel process
http://svn.apache.org/repos/asf/incubator/ode/trunk/axis2-examples/src/examples/HelloWorld2/HelloWorld2.bpel

The Process name :HelloWorld2
The Operation name : hello
             PartnerLink : helloPartnerLink

So after your explanation helloPartnerLink is kind of interface right .

So from a Java Client can I access the operation "hello" through the
partnerLink ?
ie Can i get a object / handle (kind of) for this partnerLink in a Java
Client.....


Thanx in Advance..

Sam..Tam...








On 11/21/06, Alex Boisvert <bo...@intalio.com> wrote:
>
> On 11/21/06, sam tam <sa...@gmail.com> wrote:
> >
> > I have a bpel process with lots of operation ...(say op1 ,op2,op3..opn)
> >
> > I deployed this bpel process in ODE runtime.
> >
> > 1) Now I want to access but not in  the usual way..
> >
> > But like this
> >
> > invoke(process_name,operation_name)...ie
> > (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
> >
> > How to do so ?
>
>
>
> Conceptually in the web service world, an invocation takes a data tuple of
> {service, port, operation, payload}.  In some cases the operation may be
> inferred from the message, but it's not a requisite.
>
> The issue here is that a process may offer multiple services with the same
> operation, so you're making some simplifying assumptions if your going to
> consider only {process, operation, payload}.
>
> But if you still want to resolve the operation based solely on the process
> type, you'd have to introspect the BPEL definition and iterate through the
> various partnerlinks to find the matching one, and after that resolve the
> service based on the partnerLink binding in deploy.xml.
>
> This can be done by the client or by the integration layer, but in either
> case you are effectively breaking a number of rules/assumptions about web
> services in general.   I'm not so sure it's worth it.
>
>
> 2)
> > Also PartnerLink :
> > [ Partner link types represent the interaction between a BPEL process
> and
> > the involved parties ]
> >
> > So every process has a partnerLink or is it like Every operataion in the
> > Process will have a partnerLink ?
>
>
>
> You can think of partnerLinks as bi-directional interfaces.  Borrowing
> from
> the Java notation, say you want to model a bank account:
>
> interface Account {
>     double debit( double amount );   // request-response
>     double credit( double amount );  // request-response
> }
>
> If all your operations use the request-response message exchange pattern,
> then your partnerLinkType is as simple as:
>
> partnerLinkType AccountPL {
>     role "bank" Account;
> }
>
> Here you only need one "bank" role to provide access to the account.
>
> But what if you want to model your account operations as (asynchronous)
> one-way exchanges?   You would end up with two interfaces because you need
> an additional interface to model the call-backs:
>
> interface AsyncAccount {
>     void debit( double amount );    // one-way
>     void credit( double amount );   // one-way
> }
>
> interface AsyncAccountCallback {
>     void balance( double amount );   // one-way
> }
>
> and you would introduce a partner role into the partner link type to
> represent the customer callback:
>
> partnerLinkType AsyncAccountPL {
>     role "bank" AsyncAccount;
>     role "customer"  AsyncAccountCallback;
> }
>
> I hope that helps you better understand partnerLinks.
>
> alex
>
>

Re: Need soem info on : partnerLink and Invoking (Process_name,Opereation_name)

Posted by Alex Boisvert <bo...@intalio.com>.
On 11/21/06, sam tam <sa...@gmail.com> wrote:
>
> I have a bpel process with lots of operation ...(say op1 ,op2,op3..opn)
>
> I deployed this bpel process in ODE runtime.
>
> 1) Now I want to access but not in  the usual way..
>
> But like this
>
> invoke(process_name,operation_name)...ie
> (HelloWorld,op1)..(HelloWorld,op2)...(HelloWorld,opn).
>
> How to do so ?



Conceptually in the web service world, an invocation takes a data tuple of
{service, port, operation, payload}.  In some cases the operation may be
inferred from the message, but it's not a requisite.

The issue here is that a process may offer multiple services with the same
operation, so you're making some simplifying assumptions if your going to
consider only {process, operation, payload}.

But if you still want to resolve the operation based solely on the process
type, you'd have to introspect the BPEL definition and iterate through the
various partnerlinks to find the matching one, and after that resolve the
service based on the partnerLink binding in deploy.xml.

This can be done by the client or by the integration layer, but in either
case you are effectively breaking a number of rules/assumptions about web
services in general.   I'm not so sure it's worth it.


2)
> Also PartnerLink :
> [ Partner link types represent the interaction between a BPEL process and
> the involved parties ]
>
> So every process has a partnerLink or is it like Every operataion in the
> Process will have a partnerLink ?



You can think of partnerLinks as bi-directional interfaces.  Borrowing from
the Java notation, say you want to model a bank account:

interface Account {
    double debit( double amount );   // request-response
    double credit( double amount );  // request-response
}

If all your operations use the request-response message exchange pattern,
then your partnerLinkType is as simple as:

partnerLinkType AccountPL {
    role "bank" Account;
}

Here you only need one "bank" role to provide access to the account.

But what if you want to model your account operations as (asynchronous)
one-way exchanges?   You would end up with two interfaces because you need
an additional interface to model the call-backs:

interface AsyncAccount {
    void debit( double amount );    // one-way
    void credit( double amount );   // one-way
}

interface AsyncAccountCallback {
    void balance( double amount );   // one-way
}

and you would introduce a partner role into the partner link type to
represent the customer callback:

partnerLinkType AsyncAccountPL {
    role "bank" AsyncAccount;
    role "customer"  AsyncAccountCallback;
}

I hope that helps you better understand partnerLinks.

alex