- From: Gary Brown <gary@pi4tech.com>
- Date: Mon, 23 May 2005 21:04:33 +0100
- To: "Nickolas Kavantzas" <nickolas.kavantzas@oracle.com>, "Charlton Barreto" <charlton_b@mac.com>
- Cc: "'WS-Choreography List'" <public-ws-chor@w3.org>
Hi Nick, I will see what I can do regarding the WSDL 1.1/2 examples. Not sure if they will be available before tomorrows call. However, I think we are going round in circles regarding the other topic - my position is that the abstract interfaces are the important part of the interface definition, as other binds can always be defined in the future - even for use by a BPEL engine. You are concerned with the limitations of the current bindings, which I feel is not a limitation that should be transferred to CDL. Regards Gary ----- Original Message ----- From: "Nickolas Kavantzas" <nickolas.kavantzas@oracle.com> To: "Gary Brown" <gary@pi4tech.com>; "Charlton Barreto" <charlton_b@mac.com> Cc: "'WS-Choreography List'" <public-ws-chor@w3.org> Sent: Monday, May 23, 2005 8:30 PM Subject: Re: Fault name in WSDL1.1 > Hi Gary, > > See below for my comments. > > > > Regards, > > -- > Nick > ----- Original Message ----- > From: Gary Brown > To: Nickolas Kavantzas ; Charlton Barreto > Cc: 'WS-Choreography List' > Sent: Friday, May 20, 2005 1:29 AM > Subject: Re: Fault name in WSDL1.1 > > > Hi Nick, > > Firstly, before addressing your questions: > > "Thus, it can be used to specify truly > interoperable, collaborations between any type of party regardless of the > supporting platform or programming model used by the implementation of the > hosting environment." > > If you had two services that implemented exactly the same functional > interface, where the operations included faults, but one used WSDL1.1 and > the other WSDL2, in the current CDL it would require the interactions (and > information types) to be modified to deal with these different cases. To > meet the statement above, I don't think this is a very good situation. > Taking the approach that Charlton and I are backing, would mean that the > CDL > would be completely independent of 'implementation' details, as it would > be > using the abstract interface description that is consistent across WSDL1.1 > and WSDL2. > > Do you agree? > > <NK> > I would like to see how this would work per your proposal for both WSDL > 1.1 > and WSDL 2.0. > > Since, in your proposal you have removed any reference to WSDL 1.1/2.0, I > am > not sure what is > the mapping of faultName from CDL to WSDL 1.1/2.0 faults. > > Please clarify. > > </NK> > > > Now on to your questions: > > 1) In order to answer this question, let me ask you one. If as a software > engineer, you are given an interface to implement against. Would you > de-compile the implementation code, understand how it works, and then base > your usage of the interface on the implementation details? > > I hope the answer to this question is that you would not! A good software > engineer implements based on the interface contract, as this enables the > implementation of that interface to evolve without impacting the clients > of > the interface, as they have a common contract to adhere to. > > The arguments that you have consistently raised on this topic relates to > the > implementation details behind the WSDL interface. What Charlton and I are > doing is focusing on the interface. > > It does not matter what bindings are currently out there, only what is > possible given the interface definition language. > > <NK> > WSDL 1.1/2.0 are the interface definition languages that CDL depends on. > > And both versions of WSDL include not only an abstract part (that defines > the interface/oper/...) but also a binding part. > The binding part describes concrete message format(s) and transmission > protocol(s) which can be used to access an endpoint. > > It is the combination of the both the WSDL 1.1/2.0 abstract and binding > parts that need to be defined properly, so that "interoperability" is > guaranteed between applications developed for different > platforms/languages. > > Otherwise, if one looks only at the abstract part, then this would be just > a > "theoretical" exercise, since apps would not be able to > exchange messages that they would understand. > > > So, what I am/was saying is that since there are issues with the > abstract/binding part of WSDL regarding faults, > we (in CDL land) should depend on the WSDL fault features that do work. > > </NK> > > > 2) Again I would say that you are focusing on implementation rather than > interface. Can you guarantee that BPEL engines of the future won't support > other bindings than SOAP, and therefore that the faultname may get > carried? > > > <NK> > Please look above for my WSDL abstract/binding point. > > Also, lets remember that BPEL is one of the different types of endpoint > implementations that need to conform to > a CDL collaboration contract and a WSDL service description contract (that > includes both the abstract and the binding parts). > > As we've discussed before in the Choreography WG another important > endpoint > implementation would be Java/WS. > </NK> > > > > > > Regards > Gary > ----- Original Message ----- > From: Nickolas Kavantzas > To: Charlton Barreto ; Gary Brown > Cc: 'WS-Choreography List' > Sent: Thursday, May 19, 2005 8:11 PM > Subject: Re: Fault name in WSDL1.1 > > > Hi Charlton & Gary, > > > Quoting from the WS-CDL WD spec: > > 1) The WS-CDL specification depends on the following specifications: > XML 1.0 [XML], XML-Namespaces [XMLNS], XML-Schema 1.0 [XMLSchemaP1], > [XMLSchemaP2] and XPointer [XPTRF]. Support for including and referencing > service definitions given in WSDL 2.0 [WSDL20] is a normative part of > the WS-CDL specification. In addition, support for including and > referencing > service definitions given in WSDL 1.1 as constrained by WS-I Basic Profile > [Action: add references] is a normative part of the WS-CDL specification. > > 2) A Choreography Description Language does not depend on a specific > business > process implementation language. Thus, it can be used to specify truly > interoperable, collaborations between any type of party regardless of the > supporting platform or programming model used by the implementation of the > hosting environment. Each party, adhering to a Choreography Description > Language collaboration representation, could be implemented using > completely > different mechanisms such as: > -Applications, whose implementation is based on executable business > process languages [XLANG], [WSFL], [WSBPEL], [BPML], [XPDL] > -Applications, whose implementation is based on general purpose > programming languages [JLS], [C#S] > -Or human controlled software agents > > > Including again the example that I sent yesterday, lets say that > there is a BankServer.wsdl that is defined as follows: > > <wsdl:definitions .... > > <types> > <xsd:schema targetNamespace="..."> > <xsd:element name="InvalidRequest"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="accountNumber" type="xsd:int"/> > <xsd:element name="amount" type="xsd:int"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > </xsd:schema> > </types> > > <message name="operException" > > <part name="faultDetail" element="tns:InvalidRequest" /> > </message> > > <wsdl:portType .... > * > > <wsdl:operation name="withdraw" ...> > > <wsdl:input name="inp" message="..."/> > <wsdl:output name="outp" message="..."/> > > <wsdl:fault name="flt1" message="tns:operException"/> > <wsdl:fault name="flt2" message="tns:operException"/> > > </wsdl:operation> > > </wsdl:portType > > > ... > > </wsdl:definitions> > > > And there is a client using this wsdl and calls the "withdraw" operation. > > If there is an exception that occurs within the "withdraw" operation > implementation, then the client CAN NOT differentiate if the fault with > name > "flt1" has occured at the server side or the fault with name > "flt2" has occured at the server side. > > > Based on this example I have few questions for you: > > 1) CDL needs to be able to "work" not only when BPEL is used as the > endpoing > executable platform but also when Java is used as the endpoing executable > platform. > > Clearly, in the Java/WS space it is not possible to distinguise a fault > name > when > there is fault type oveloading in the same operation, as I described in > the > example above. > > So, if I had: > a) a Java/WS client and a Java/WS server OR > b) a Java/WS client and a BPEL server OR > c) a BPEL client and a Java/WS server > > I COULD NOT make these interactions conform to the CDL contract. > > > Do you agree? > > > 2) I guess if both the client and the server are BPEL executable programs > running on a BPEL engine supplied from one vendor this would work. > > But, when both the client and the server are BPEL executable programs > running on BPEL engines supplied from different vendors, > then there is not concrete intreop defined anywhere on how to encode a > fault-name in the server side so that the client > can get it when the fault response arrives. > > I am saying that we COULD NOT make these interactions conform > to the CDL contract in these cases. > > > Do you agree? > > > > > Thanks, > > -- > Nick > > > > ----- Original Message ----- > From: Charlton Barreto > To: Nickolas Kavantzas > Cc: Gary Brown ; 'WS-Choreography List' > Sent: Wednesday, May 18, 2005 8:20 PM > Subject: Re: Fault name in WSDL1.1 > > > Hi Nick, Gary: > > > My responses are inline. I apologize for not being able to stay on > Tuesday's > call for the entire duration to further discuss this. > > > -Charlton. > > > On 18/05/2005, at 17:01, Nickolas Kavantzas wrote: > > > Hi Gary, > > Here is what I said yesterday in the WS Choreography WG conf-call: > > The fault name defined within an request-response operation using WSDL 1.1 > is not visible in an interoperable way to a client getting a fault > response > as a return from an invocation to the request-response operation. > > > > [cbb] It may not be visible to a client, but I don't think this is the > point. In CDL we're dealing with interface-level logical definitions as > opposed to what a client is seeing on the wire. It's the executable > platforms which care what is on the wire, and we already have BPEL which > uses a fault name association similar to what Gary has proposed to solve > the > same WSDL 1.1 problem. The fault name is clearly used at the interface > level > and the WSDL 1.1 ambiguity has been enough of an issue to have languages > such as BPEL address it in such a fashion. > > > The CDL exception handling mechanism doesn't actually throw an exception, > but correlates the information type on the throwing element to the field > in > hasExceptionOccurred. The mechanism allows for two parts of a choreography > to cause an exception on a node that has the same fault informationType - > the exception handler for that informationType would not have any > information on which part of the choreography had raised the fault, > forcing > the handler to examine the choreography state to determine this. Gary's > proposal addresses this by ensuring that the exception mechanism is not > bound to particular types. > > > Here is an example: > > <snip> > > Concluding I would repeat what I said yesterday in the conf-call: > > When I was designing the fault mechanism for WS-CDL, I chose a simple > design, where a fault is caught based on its type, that would not have to > solve > all the issues listed above. > > IMHO, the current WS-CDL fault mechanism works fine as is but if there is > a > different proposal I would be happy to review it and comment on it. > > > > > [cbb] We do have a different proposal which is the existing WS-CDL fault > mechanism as modified by Gary's proposal (Note that the proposal's > modifications have a small footprint on CDL). > > > To reiterate, Gary's proposal provides a way to uniquely identify WSDL 1.1 > faults, which cannot be done at present, and to avoid unnecessary > duplication of definitions when faults may actually be associated with > smaller set of real types, while enabling a consistent approach which > simplifies the CDL definition. As part of his proposal Gary suggests we > modify causeException to provide and exception name, rather than using the > information type - a minor change to the syntax with zero effect on the > semantics. > > > > Regards, > > -- > Nick > > ----- Original Message ----- > From: Gary Brown > To: 'WS-Choreography List' > Sent: Wednesday, May 18, 2005 8:13 AM > Subject: Fault name in WSDL1.1 > > > Responding to Nick's comment on yesterday's conference call, regarding the > fault name attribute in WSDL1.1 not being used (i.e. faults are only > distinguished by their type), I would point to the following two pieces of > evidence that in my view contradict that view, and therefore indicates > that > we need a means of differentiating faults by name in WS-CDL: > > 1) WSDL1.1 spec: > > The 'name' attribute on the fault element is mandatory. > * > ? > * > ? > ? > ? > > ? > ? > > * > ? > > > > > 2) WS-BPEL: > > The following syntax for an invoke, with embedded fault handlers, shows > that the 'catch' elements have a mandatory 'faultName' attribute, whereas > the type attribute is optional. > <invoke partnerLink="ncname" portType="qname"? operation="ncname" > inputVariable="ncname"? outputVariable="ncname"? > standard-attributes> > standard-elements<correlations>? <correlation set="ncname" > initiate="yes|no"? pattern="in|out|out-in"/>+</correlations><catch > faultName="qname" faultVariable="ncname"? > faultMessageType="qname"?>* > activity</catch><catchAll>? > activity</catchAll><compensationHandler>? > activity</compensationHandler></invoke> > > > >
Received on Monday, 23 May 2005 20:04:46 UTC