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 <[EMAIL PROTECTED]> wrote:

On 11/21/06, sam tam <[EMAIL PROTECTED]> 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


Reply via email to