RE: [wsbpel] Issue - 77 - Under specified operation definitions

From
Ugo Corda <>
Date
2003-11-25T20:34:23+00:00
ID
Thread
RE: [wsbpel] Issue - 77 - Under specified operation definitions
Ron,

 

> What, exactly 
is the relationship between an operation defined in a port type, and that 
operation as bound 

> to a particular 
protocol?  Is this why you are concerned about relying on port types for 
our message descriptions?

 

I am not sure I 
understand your question. What I was saying is that there is no substantial 
difference between a binding for a portType and a binding for an abstract 
message not belonging to a port type. In either case, the associated parts might 
or might not be used by the binding. So, you might find variables in current 
BPEL activities that, for some bindings, have parts not mapped to the wire 
(so are uninitialized), despite the fact that they belong to what you consider 
the "true" abstract interface.

 

> "A binding 
defines message format and protocol details for operations and messages defined 
by a particular portType."

> This clearly 
separates the layers. I don't see any mention of  "extra" abstract messages 
becoming part of the abstract endpoint type. 

The fact that a 
reference to "extra" abstract messages binding is missing is just an example of 
how poorly "extra" abstract messages are described in the spec. (That's, after 
all, the source of all these discussions). Or are you saying that this 
binding rule does not apply to "extra" abstract messages? Then where is that 
binding rule specified? And if those "extra" abstract messages have no 
binding defined, how would you be able to map them to a soap:header, the same 
way you do for a part defined in a portType?

 

> Can you provide 
us with a definition of an abstract endpoint using WSDL terminology? 

Here it is. "An abstract endpoint is defined by a particular portType 
plus all the abstract messages not belonging to any portType. A particular 
binding will specify which parts in those "extra" abstract messages will 
belong the concrete endpoint (the same way that the binding will specify 
which parts in the portType will belong to the concrete 
endpoint)".

 

You certainly can say that this interpretation is 
arbitrary, but yours is too for the simple reason that the WSDL 1.1 spec *does 
not* define what an abstract endpoint is. Any such definition can only be 
derived by interpretation of certain parts of the spec. Since the spec itself is 
unfortunately unclear, different interpretations can be derived from 
it.

 

Ugo

 

 -----Original Message-----
From: 
Ron Ten-Hove [mailto:]
Sent: Tuesday, November 
25, 2003 12:03 PM
To: Ugo Corda
Cc: 

Subject: Re: [wsbpel] Issue - 77 - Under 
specified operation definitions

Ugo,

Ugo 
  Corda wrote:

  
    
    
Ron,

    
 

    
> Some 
    bindings will include extra message parts (possibly as SOAP headers, or JMS 
    headers), while others will not (perhaps an EJB or MDB binding?). 
    

    
> The only 
    message parts guaranteed to be delivered to the service by all of the 
    possible bindings are those declared in the port type. 

    
 

    
No, there is no 
    guarantee that the parts declared in a port type will be delivered by all 
    possible bindings. A binding can select any subset of those parts (possibly 
    the empty subset). This is clearly specified in the SOAP binding where the 
    soap:body element can select which parts are going to be mapped to concrete 
    messages and which ones are not.

    
 

    
This is exactly 
    the same thing that happens with abstract messages that are not part of a 
    port type. A particular binding will select some of them and leave others 
    out. The only difference is that, in the case of SOAP bindings, portType 
    parts can map to either bodies or headers, while non portType parts can only 
    map to headers. Nothing is said, of course, about bindings other than SOAP 
    which don't have the concept of a 
  header.
    What, exactly is 
  the relationship between an operation defined in a port type, and that 
  operation as bound to a particular protocol?  Is this why you are 
  concerned about relying on port types for our message descriptions?

  
    
 

    
> How could 
    any reasonable interpretation or use of WSDL conclude that a specific 
    binding type (namely SOAP) 

    
> has 
    the ability to jump across the logical layers that WSDL has defined (albeit 
    imperfectly!). 

    
> This is 
    fundamental: we are talking about the WSDL model of messaging, not 
    SOAP.

    
 

    
I am talking 
    about any possible binding, not just SOAP. It really all depends on how you 
    define the logical layers. We all agree there is an abstract layer and a 
    concrete layer. So far nobody has shown me that the WSDL 1.1 states that 
    abstract messages outside portTypes are not part of the abstract layer. 
    In particular, your quotations below do not say anything about 
    that either.
    WSDL 1.1, 
  Section 2.5:

  "A binding defines message format and protocol details for 
    operations and messages defined by a particular 
  portType."
    This clearly separates the 
  layers. I don't see any mention of  "extra" abstract messages becoming 
  part of the abstract endpoint type. Microsoft has a nice article 
  on the MSDN site that includes a diagram that illustrates this 
  nicely.

    Perhaps we a suffering from terminology 
  differences here. Can you provide us with a definition of an abstract endpoint 
  using WSDL terminology? I hold that an abstract endpoint is defined by the 
  port type (or interface, if you prefer WSDL 2.0 
  terminology).

Cheers,
-Ron