- From: Stephen White <swhite@SeeBeyond.com>
- Date: Tue, 18 Mar 2003 09:58:03 -0800
- To: <public-ws-chor@w3.org>
- Message-ID: <EDDE2977F3D216428E903370E3EBDDC96B0E19@MAIL01.stc.com>
From the discussions last week, it is clear that we want to do "external," even though the details have not been defined. What is not clear is whether we should do "internal" at the same time. I think that a technical justification for either position can be found in the relationship between the specifications that can be developed for each of them. Other factors, such as practical factors, can be addressed later. If you consider a stack of specifications, with WSDL as the baseline, then an "internal" and "external" specification could be layered on top of WSDL. The question is whether the two are side-by-side or are layered with "external" above WSDL and "internal" above "internal." I have included a simple diagram to show these relationships. If the two specifications can be demonstrated as being side-by-side, in spite of some overlap (Version B in the diagram), then the goal of this working group should be to only work on the "external" specification. But, if the two specifications are truly layered (Version A in the diagram), then there is an argument that both specifications should be addressed. -Steve -----Original Message----- From: Assaf Arkin [mailto:arkin@intalio.com] Sent: Tuesday, March 18, 2003 3:06 AM To: Jim Hendler; public-ws-chor@w3.org Subject: RE: Internal/External questions - scribed from f2f 1 > -----Original Message----- > From: public-ws-chor-request@w3.org > [mailto:public-ws-chor-request@w3.org]On Behalf Of Jim Hendler > Sent: Friday, March 14, 2003 12:11 PM > To: public-ws-chor@w3.org > Subject: Internal/External questions - scribed from f2f 1 > > > > The following is a list of questions relating to external v. internal > design decisions, developed by abreakout group at the first face to > face: > > ------------ The comments below reflect my opinion: > What are the business problems we're trying to solve? > - what is the distinction between internal and external > * internal = building implementation? Awareness of details? > * external = interface/contract > [explain w/use cases] Depends on your point of view. If you are a stock holder in my company that I would like you to only have information that is available to the public at large. If you are a potential customer I would give you more detailed information, I would trade you even more information if you are a business partner. But I still won't tell you how much I make on each sale. Unless you are my accountant, that is. In all four roles you are a different business entity, yet the barrier is not cast in stone but rather fluid and depends on what we want to achieve. In other words, one man's external is another man's internal and vice versa. The interface of the service define it's external behavior. That's what someone can tell about its behavior by exchanging messages with it. It may do a lot of other things that are not observable in that way, let's call that internal. Now, there are three tricky points here: 1. Conceptually the internal may be no different from the external. It's very easy to come up with a test case in which the interface describes all that the implementation does. It's impossible to force the internal to be different from the external, but in most cases this difference does exist. 2. There are valid reasons for exposing some of that internal information as part of the interface even though it's not observable. The use cases I've been given for doing that all deal with privacy, to protect their privacy people want more visibility. It's akin to asking the CheapDeals.com what they do with your e-mail address so it doesn't end up at the hands of Spam.com. 3. What is externally observable may be the result of internal activities, so even the narrow definition of interface that describes only externally observable behavior would allow for definitions that some internal-only advocates don't like. But if won't force them to use it - only allow if they choose to. It's important to state that the language does not say what you should expose, it only gives you a tool and you can use that tool any way you see fit. I may decide to expose more details, so I will write them down as part of the choreography. Someone else may decide to expose less details, so they would write a more constrained choreography. But the language will never force you to expose more than you want to. The discretion is always at your hands. > - as a consumer/developer, what do I need to know to use ws-chor? > - are we trying to develop a lang to tie together WS? > If not, what are we developing? Yes we are. > - what definitions/terms must we have consensus on, how do these > effect our ability to make the int/ext decision? My list so far: choreography, orchestration and implementation. And I think these are the interesting terms because have to expose implementation details is both an issue and breaks the abstraction that is important for choreography. But being able to do so selectively brings more value to choreography. And the thin line is orchestration which is sometimes as abstract as defined by the choreography and sometimes as concrete as being an implementation. > - does external exposition require communication of internal details > * how does the description of the service related to int/ext > * separating the description from impl langs (GPL, > WSDl, etc.) The description of the service says everything about its behavior. You may say as little as possible, or you may include more information. You can expose different information to different people. For example, you can always say "this service is implemented according to spec X", but never give anyone access to spec X. Or you can give access to spec X, or spec X may be well known. For example, HIPPA says a lot about security and privacy of data, so you can say that a service is implemented according to that spec and you do expose some information, but information that you are mandated to expose by law. > - how do we ensure we have a set of abstraction at various levels, > such that the relations among levels are complete and > well-formed (relate to int/ext) This is one of the thing that composition needs to address. If I compose services X and Y to form service Z then this composition is a definition of service Z. The composition is interesting to me: it describes the choreography between X and Y. The composition may not be interesting to someone using service Z. We can enable composition in the language in such a way that I can compose X and Y to form Z but I can let others use Z without having access to that composition. We can also allow someone to expose these details at their discretion. The language should not force one use by employing a recursive model of composition. > - does the distinction stay consistent for both inter- and > intra- company choreographies? Yes. Definitions are like information: if you own them you can decide what information to give to whom. You can share it with the world, with your business partner, with one business partner, or just hide it in your drawer. > - what is choreography w respect to: > * a lang to tie together WS > * separate desc language WS Choreography should be a language to tie together Web services. However, it should be seen as a separate description language from WSDL, XSDL, WS-Policy, etc, but one that can used in combination with these languages (e.g. to extend WSDL, or to be references in a policy). > - if choreography must be internally consistent, how can we > view it externally This is not an issue if we elect a recursive model for composition. > - what is the theoretical "definition" of choreography, and > does this imply external v. internal? The theoretical definition of choreography does not imply external v. internal. However, it does make a distinction between implementation and interface. The interface describes the externally observed behavior, which is to say, everything that is not externally observered is internal. Usually the internal will have much more details than the external, but nothing prevents the external from being equivalent to the internal, especially for the simple cases. An implementation may itself be achieved by another choreography, and recursively, so the ability to do recursive composition gives you a nice clean model and also lets you control what information is exposed at what level. > * e.g. does pi-calculus constrain us to a particular view pi-calculus fits well with recursive composition, it allows you to view things at different levels and also to compose processes from smaller processes recursively. > - does compositionality require internal view/details? > * composition @ runtime > - is the thing that gets composed itself a service? > * does this imply int or ext Yes. > - how can we understand what we're trying to do relative to > existing specs (BPEL, BPSS, WSCI, WSFL, etc.) > * do other specs have internal/ext distinction BPEL, BPML, WSCI and WSFL take a similar approach to recursive composition, so in fact we're not reinventing, we have a basis with which to work, and we have experience with using that stuff. BPSS takes a different approach. > What are the technical problems we're trying to solve and how do > these relate to the business problems? Are these different problems > for internal vs. external? There is a big overlap between choreography and orchestration, and both are interesting problems that are solved by a single model. By not making any arbitrary restriction on the choreography language we in fact allow both. But we are not going into implementation. An implementation that is not a composition of Web services requires a different approach that is outside of scope. arkin > > > > -- > Professor James Hendler hendler@cs.umd.edu > Director, Semantic Web and Agent Technologies 301-405-2696 > Maryland Information and Network Dynamics Lab. 301-405-6707 (Fax) > Univ of Maryland, College Park, MD 20742 240-731-3822 (Cell) > http://www.cs.umd.edu/users/hendler
Attachments
- image/jpeg attachment: WS-C.jpg
Received on Tuesday, 18 March 2003 12:58:10 UTC