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