- From: Andrew Berry <andyb@whyanbeel.net>
- Date: Tue, 9 Sep 2003 00:03:30 +1000
- To: Ricky Ho <riho@cisco.com>
- Cc: "Burdett, David" <david.burdett@commerceone.com>, "'Ugo Corda'" <UCorda@SeeBeyond.com>, "WS Choreography (E-mail)" <public-ws-chor@w3.org>
Perhaps we can ground this discussion by thinking about how a choreography would be implemented. As I see it, we have three possible approaches to implementation: 1. Have choreography-aware services. If you're building on top of existing standards, then I believe this means that correlation information belongs in the message body and is interpreted by the services. This approach means that only choreography-aware applications can participate but does allow building on top of existing standards. 2. Use a choreography-aware "proxy" that interprets choreography information and invokes appropriate choreography-oblivious services to realise the choreography semantics. This proxy could use either header (assuming extensible headers) or body information, although body information would need to be stripped before passing onwards. I suspect this is where the majority of David's thoughts lie. 3. Use a choreography-aware infrastructure with services built/generated explicitly for that infrastructure. In this case, correlation belongs in the message header and would typically be interpreted by an engine/proxy on behalf of the services (this is the approach I use in my work). The second and possibly the first are required for compatibility with existing service infrastructures. I believe the latter is our future. I don't think we should be excluding any. Given this and other discussion, I don't think that the CDL should specify how correlation is achieved: it belongs in the technology bindings. Ciao, AndyB On Sunday, September 7, 2003, at 02:34 PM, Ricky Ho wrote: > In BPEL, there is no where in the incoming message indicating where to > locate the correlation information. If the process instance > specifying the <correlation> in its <receive> activity, then the BPEL > engine will be able to know where to look for the correlation > information according to the <correlationSet> definition in the > containing <scope>. > > Rgds, Ricky > > At 11:54 AM 9/4/2003 -0700, Burdett, David wrote: > > Ugo > > Thanks for the clarification. What you are saying is that BPEL allows > correlation to be done in multiple different ways. This in turn means > that in each BPEL definition you need to specify how it is going to be > done. You could also have multiple different ways being used in the > same BPEL definition or between partners. > > Is this right? > > I will also include this in a later version of my note once we have > more feedback. > > Finally, do you think there is any benefit in having a standard way of > doing the "header only correlation" if you want to do it. > > David > > -----Original Message----- > From: Ugo Corda [mailto:UCorda@SeeBeyond.com] > Sent: Wednesday, September 03, 2003 8:23 PM > To: Burdett, David; WS Choreography (E-mail) > Subject: RE: Body vs Header Correlation - which is best? > > David, > > I don't think the BPEL correlation mechanism corresponds to your "body > with header references" case. > > Assuming a SOAP binding is used, and depending on the particular SOAP > binding chosen, BPEL correlation sets could correspond to "header only > correlation", or "body only correlation", or a combination of the two. > This is because a BPEL correlation set is a collection of Properties > (globally unique names) which are individually mapped to WSDL message > parts. In the case of SOAP binding, each one of those WSDL parts could > end up either in the SOAP header or in the SOAP body, depending on how > the binding is defined. > > Ugo > -----Original Message----- > From: Burdett, David [mailto:david.burdett@commerceone.com] > Sent: Wednesday, September 03, 2003 5:18 PM > To: WS Choreography (E-mail) > Subject: Body vs Header Correlation - which is best? > > We've been talking about whether or not we should specify how to do > correlation, so I thought it would be a good idea to suggest some > alternative ways of doing correlation together with their "pros and > cons" so that we can, hopefully, make some type of objective decision > on what, if anything, to do. > > Note that this problem does not apply just to correllation, but also > how you identify the choreography type being performed, and the > specific message (interaction) within a choreography type that a > message represents - although I don't always mention this specifically > in the descriptions below. > > So here are the five options I've thought of ... > > HEADER ONLY CORRELATION > Put the correlation, choreography type, etc, in a header on the > message (e.g. a SOAP header) > Advantages: > 1. Independent of the payload - works with any message format > 2. Works with message payloads that do not contain any data that can > be used for correlation, etc > 3. Independent of the application that is processing the payload > 4. Simple correlation mechanism > Disadvantages: > 1. If there is data in the payload that can also be used, then it > might be inconsistent > 2. Correlations might not be simple if there are many overlapping > threads. > > BODY ONLY CORRELATION > Use information for correlation, choreography type, etc. contained in > the body of a message, e.g. an order Id in an order document. > Advantages: > 1. Re-uses "real" often, business derived, data. > 2. No duplication or inconsistency possible > Disadvantages: > 1. Requires that the content and structure of the payload is > understood before correlation, etc. can be done or checked > 2. Ties correlation to a particular message format - means generalized > correlation mechanisms can't be used > 3. Requires the application does the correlation, choreography type > checking etc, instead of payload-independent middleware doing instead > > BODY WITH HEADER REFERENCES > Use information in the body (as in Body Only Correlation) but also > provide "pointers" of some kind in a header (e.g. a SOAP header) which > points to the where within the body the correlation information is > contained. This is, I believe, the BPEL suggested approach. > Advantages: > 1. Potential for a generalized approach - payload-independent software > can follow the references to find the data being referenced > 2. Removes the need for the application to do correlation > Disadvantages: > 1. The different types and formats of the data being referenced and > the payloads being used will significantly adds to the complexity of > following message paths. > 2. Probably restricted to XML payloads. For example if the payload was > a PDF file then this would not work (no flames please for not > requiring use of XML ! ) > 3. Possible performance problems - especially if the message payloads > are large. > 4. Only works if the message is not encrypted. If the payload is > encrypted then it might not be possible to resolve the reference > > BODY WITH HEADER COPY > Use information in the body (as in Body Only Correlation) but this > time *copy* the information from the body into a SOAP header. > Advantages: > 1. Independent of the message format > 2. Removes the need for the application to do the correlation > 3. No performance problems as payload does not need to be examined > 4. The payload can be encrypted and only the data required for > correlation copied to the header. > Disadvantage: > 1. Probably need to map the payload data (e.g. integer) to a standard > external one in the header (e.g. string) > 2. Duplicate data with potential for inconsistencies between the body > and header versions of the correlation data > > BODY AND HEADER SEPARATE > Use information in the body, but with separate, independently created, > correlation, etc id's in the header > Advantages: > 1. Independent of the message format > 2. No need for the application to do the correlation > 3. No need to map between body and header formats > 4. Same approach whether or not the body contains data that can be > used for correlation > 5. Header correlation information need bear no resemblance to the > payload equivalent which may be encrypted > 6. No performance problems as payload does not need to be examined > Disadvantages: > 1. Potential for inconsistencies between the header and body > mechanisms for correlation > 2. Does correlation twice in two different ways - in the header AND in > the body. > > I hope I've thought of all the options - are there any more? > > I also hope I've covered all the advantages/disadvantages fairly - any > comments? > > Now which is aprpoach is "best"? One of them? Some of them? All of > them !!! > > Thoughts anyone ... I'll save mine for later ... > > David > PS Should I copy this to the BPEL list? > Director, Standards Strategy > Commerce One > 4440 Rosewood Drive, Pleasanton, CA 94588, USA > Tel/VMail: +1 (925) 520 4422; Cell: +1 (925) 216 7704 > <mailto:david.burdett@commerceone.com>; Web: > <http://www.commerceone.com> > >
Received on Monday, 8 September 2003 10:06:28 UTC