- From: Cummins, Fred A <fred.cummins@eds.com>
- Date: Wed, 6 Aug 2003 16:32:28 -0500
- To: "Burdett, David" <david.burdett@commerceone.com>, Mark Little <mark.little@arjuna.com>, Assaf Arkin <arkin@intalio.com>, "Burdett, David" <david.burdett@commerceone.com>
- Cc: jdart@tibco.com, public-ws-chor@w3.org
- Message-ID: <1A254DC4B97D8C4CB4A5611CF8058F5F017B8F0F@USPLM214>
David, See comments below. Fred -----Original Message----- From: Burdett, David [mailto:david.burdett@commerceone.com] Sent: Tuesday, August 05, 2003 5:13 PM To: Cummins, Fred A; Mark Little; Assaf Arkin; Burdett, David Cc: jdart@tibco.com; public-ws-chor@w3.org Subject: RE: simultaneous execution Fred See comments inline. David -----Original Message----- From: Cummins, Fred A [ mailto:fred.cummins@eds.com <mailto:fred.cummins@eds.com> ] Sent: Tuesday, August 05, 2003 1:20 PM To: Mark Little; Assaf Arkin; Burdett, David Cc: jdart@tibco.com; public-ws-chor@w3.org Subject: RE: simultaneous execution I believe this thread has reached a conclusion I don't agree with as a result of some implicit assumptions: 1) that a choreography has instances. 2) that a choreography must express how a message type is determined. 3) that the choreography must define how one conversation/transaction is distinguished from another when there are two or more conversations involving the same participants, roles and choreography. A choreography does not have instances since it is not executed, it is observed (i.e., complied with), just as a law does not have instances, only instances of people complying or breaking the law. <DB>I think of a choreography *definition* as a design of *what* you can do just as an architect can provide a design for a building. However the same design can be followed multiple times resulting in, for the architect, multiple building. Identifying each of the buildings that was built is obviously useful for example in case there was a probelm with the design that needed to be fixed. For exactly the same reason, it is useful to identify each time a choreography definition is followed. Now whether the term used to describe a choreography being followed should be "used", "followed", "complied with", "executed" or something else really requires that the semantics of these words in the context of choreographies is properly defined. I don't think that "executed" is a good term to uses for the same reasons as you as it sounds like a program execution which it isn't. I have a marginal preference for "followed" what do others think.</DB> [FAC] Followed seems appropriate. The issue is that it is realized by the participants, not by something that executes/performs it (the choreography). Since it does not perform any actions, per se, it does not make any decisions nor operate on any variables. It only defines what the participants can do. A choreography defines what message types are acceptable, but the participants define what the message types are. <DB>In my WS Choreography spec (aka BurdettML) I introduced the idea of specifying choreographies using "message families" where a message family is an abstract term for the set of messages that server the same purpose. For example an EDI 850, a UBL Order and a RosettaNet Order are all different messages but they are all in the "Order" message family.</DB> [FAC] I think the choreography must identify the semantic type of the messages that are allowed, but these types may be realized in different ways, with different formats. They may, in most cases, be XML, but even there, there might be different specifications to achieve the same result. In addition, there may be rather generic types, that are specialized for particular industries or situations. This allows the choreography to have broad application and avoids unnecessary specialization of the choreography, per se. When a message is received, the choreography defines what the recipient should expect (one or more possibilities). <DB>Not sure about this. The choreography should define what a recipient should *send* when they receive a message of a particular type.</DB> [FAC] When a recipient receives a message of a particular type, it often has options on what to return. In the order example, it may return a rejection or a correction or a counter-offer under the right business circumstances. The choreograpy only defines the options available by agreement of the subscribing parties. Usually, there is an accept or reject option. When a message is sent, the choreography will define what messages may be sent based on what the sender determined it last received and its own internal business logic to determine the next step. <DB>Agreed</DB> The choreography does not determine which type is actually sent. Consequently, the type of a message is what the sender or receiver says it is. <DB>Does this problem go away if you think of a choreography definition as a description of what should be done. Drawing on the architecture analogy. What you really need to do is: a) design the building, b) build the building, and c) check the building was built according to the design and fix the problem if it is not. The same goes for choreographies as you: a) Design the choreography, b) build implementations that follow the choreography, and c) check the choreography is being followed and fix the problems if it is not.</DB> [FAC] I think that's fair. This is the basis for the sender to decide what to expect in return according to the choreography and for the receiver to determine what it may send in order to comply with the choreography. <DB>Agreed</DB> Neither does the choreography determine which messages are elements of the same exchange. The participants determine this possibly with the assistance of the transport protocol (e.g., session id). A choreography could specify that at some point, an exchange could branch into multiple conversations/ transactions. It does not, however, need to determine which is which, the choreography only defines the rules with which each must comply. <DB>Agreed, specifying the rules to follow is what choreography definitions are all about!</DB> Possibly, the choreography could also specify that these (or some of these) should or may join before some other action is allowed to occur. The choreography should not specify which instance, only that instances complying with certain choreography may or should join. <DB>In practice I think that you may *have* to specify that the instances are related. For example before paying for goods it might be necessary for two choreographies to complete: a) one to check the goods are in stock, and b) to know they have left the warehouse. However this only makes sense if the goods being order, the goods being checked for in stock and also the goods that left the warehous refer to the same goods!/DB> [FAC] It may be necessary to reference some symbolic parameter that should be the same for the instances to be joined. I am wary of including any sort of logic or reference to values in the messages. I think these decisions probably should be left to the participants and the choreography remain abstract. If nothing else, it retains flexibility in the implementation. I want to see the choreography as light-weight as possible so that it can be used independent of the the message format employed by participants or the technology employed, either the internal technology (e.g., the business process language) or the communication protocol (e.g., web services or message broker). <DB> +1 ... and this is *exactly* what I tried to do in the WS-Choreography spec. However since this is the WS Choreography group I think we *also* have to define how the our Choreography spec binds to web services.</DB> [FAC] I don't have any problem with the intent of binding. I just want to do it in a way that allows binding to other technologies as well. Even explicit binding to WSDL might not be too bad if there are explicit mappings from WSDL to other technologies. Fred > -----Original Message----- > From: Mark Little [ mailto:mark.little@arjuna.com <mailto:mark.little@arjuna.com> ] > Sent: Monday, August 04, 2003 4:55 AM > To: Assaf Arkin; Burdett, David > Cc: jdart@tibco.com; public-ws-chor@w3.org > Subject: Re: simultaneous execution > > > > +1. And if you look at the recent WS-CAF specifications > you'll see that > there is a separate context service definition precisely > because of this. > > Mark. > > ----- Original Message ----- > From: "Assaf Arkin" <arkin@intalio.com> > To: "Burdett, David" <david.burdett@commerceone.com> > Cc: <jdart@tibco.com>; <public-ws-chor@w3.org> > Sent: Thursday, July 31, 2003 10:58 PM > Subject: Re: simultaneous execution > > > > > > I'll have to side with Jon on this. Correlation is a generic and > > flexible mechanism that can also be used for that. A more specific > > mechanism would be too narrow in scope and would impose some > > limitations. Since we're dealing with WS in general, and not > > specifically PO scenarios, let's have the more generic mechanisms. > > > > arkin > > > > Burdett, David wrote: > > > > >If all you have is a request response over the same > channel, then I agree > it > > >is not necessary unless that request response is part of a > larger and > longer > > >interaction. > > > > > >But if you do need to do this, it is hardly rocket science > and has also > been > > >done in other specs such as ebXML messaging. > > > > > >What we really want to do is have one *definitive* way of > providing this > > >functionality. Now identifying which choreography you are > following is > > >definitely, IMO, part of our scope. However identifying > that a set of > > >messages are related is broader as you could have some sort of > "correlation > > >identifier" without specifing the choreography which being > followed. > > > > > >David > > > > > > > > > > > > >
Received on Wednesday, 6 August 2003 17:33:10 UTC