W3C home > Mailing lists > Public > public-ws-chor@w3.org > April 2003

RE: Abstract Bindable Choreography

From: Burdett, David <david.burdett@commerceone.com>
Date: Sun, 6 Apr 2003 14:57:54 -0700
Message-ID: <C1E0143CD365A445A4417083BF6F42CC053D1936@C1plenaexm07.commerceone.com>
To: "'Ricky Ho '" <riho@cisco.com>, "Burdett, David" <david.burdett@commerceone.com>, "'WS Choreography (E-mail) '" <public-ws-chor@w3.org>

 Ricky

See comments inline

David
Apologies, again for the delay, I've had PC problems. 

-----Original Message-----
From: Ricky Ho
To: Burdett, David; WS Choreography (E-mail)
Sent: 4/4/2003 12:44 PM
Subject: Re: Abstract Bindable Choreography

David,  there are some "rules" that I guess by reading your model.  Can
you confirm my following understanding of these rules ?

"Process" is where each party (who wants to play a role of the 
choreography) plug-in their private implementation.  In other words, 
"process" is the hook between "choreography" and "orchestration".
<DB>Yes, but we must call it "private implementation" ;). Also, a single
"private implementation" defined using BPEL4WS or WSCI could provide support
for multiple processes in multiple choreographies.</DB>

I categorize the states into various types
a) Border state - states sitting at the dotted line
     - Outbound border state - source state of an "interaction"
     - Inbound border state - target state of an "interaction"
b) Inner state - States within the swimlane
<DB>Good definitions.</DB>

All states are "public" in the sense that it is known by at least 2
roles (assume multi-role is allowed) at any given point in time (logical 
time).  
<DB>Yes they are public and multi-role is allowed.</DB>

The state can be derivable from the message exchanges between
these two roles.
<DB>Not completely, when a message is received, for example the order
message, the state of the receiver some time later could be any of "Order
Received" or any of the states that result from the "Check Order" process.
The buyer will only know when he receives the next message.</DB>

Every arc has exactly one source state and exactly one target state.
<DB>Yes</DB>

There is exactly one incoming arc into the "outbound border state".  
<DB>Often, but not always, for example you could have a combination of inner
states that must exist before the outbound state can be realized. For
example, in a three role choreography you might want to wait for two inner
states to occur, e.g. before a seller can provide shipping details for an
order they must a) have received and checked the order, and b) received
details about the pick up from the buyer's shipper.</DB>

The source of this incoming arc MUST be an "inner state" of the same role.
<DB>Yes except that there can be more than one "inner state".</DB>

There is exactly one outgoing arc from the "inbound border state".  The 
target of this incoming arc MUST be a "process" of the same role.
<DB>Intuitively I think this is good practice, although in theory, there is
no reason why you cannot have more than one process occur upon the arrival
of a message although I can't think of a good example.</DB>

An inner state can have (0..n) incoming arcs and (0..1) outgoing arcs.
<DB>No. An inner state can have (0..n) outgoing arcs. For example a seller
in a multi-role choreography might need to notify the buyer and the shipper
if the goods can't be picked up at the expected time. I didn't include this
type of situation in the example to keep it simple ;)</DB>

It is called a "start state" if it has 0 incoming arc.
<DB>Yes</DB>
It is called an "end state" if it has 0 outgoing arc.
<DB>Yes, although the behavior of other roles can mean that some of the
other states are "conditional end states" in that, depending on the
processing, it may be the "final" state that the role reaches. For example,
the "Accept Order Sent" state will be the end state for the Seller if the
Buyer detects no errors in the Accept Order Message.</DB>

Direct connection between inner state is disallowed.  
In other words, if an inner state has 1 outgoing arc, 
the arc must connect to an "outbound border 
state".  Similarly, if an inner state has an incoming 
arc, it must come from a "process".
<DB>Often, but not necessarily. For example, to handle a timeout, you could
have the "Order Sent" state going to another process which also had an
"Order timeout" state as an input. </DB>

A process has (1..n) incoming arcs and (1..n) outgoing arcs.  Each
incoming arc must be coming from an "inbound border state".  Each outgoing
arc must go to an inner state.  At most one of the outgoing arc can connect
to an "end state".
<DB>Often, but you can also get other states (e.g. timeout states) that do
not come from a border state and go directly to a process. On the other hand
the output of a process should always be one ore more states.
Generally, the only real restriction is that a boolean combination of states
represent a condition that trigger a process or an interaction, where the
states in the condition are states that exist within that role.
</DB>

It is not mentioned in your diagram and xml, but I consider the
"process" should have a timeout concept so that
it will be automatically triggered after certain time.  For example, in the
buyer side process "check accept 
order", how can the seller conclude whether the buyer-side state "accept
order checked OK" or state "accept order checked error" ?
<DB>I think of a timeout as just another inner state that occurs which then
results in messages being sent. Again, for simplicity, I did not include
this in the example.
To handle, your specific query, the Seller would only get information if
there was problem i.e. "Accept Order Checked". In practice, I don't think
this is an issue if reliable messaging is being used as:
1. The Seller will know that the Accept Order was delivered
2. The Seller will know, if there was a problem, that the Accept Order Error
was delivered.
This means that, for the Seller, no news is good news. Although this is an
optimistic strategy, it should work, especially when any initial teething
problems in an implementation have been ironed out.
</DB>


Best regards,
Ricky

At 11:08 AM 4/3/2003 -0800, Burdett, David wrote:
>There has been some discussion around the idea of an abstract bindable
>choreography so I thought I would provide an example in the form of a
>diagram (PDF) which shows the flow associated with the placement of an
order
>and an XML representation of the same in a declarative style. I
strongly
>suggest you look at the diagram first.
>
>Comments welcome ;-)
>
>David
>  <<PlaceOrderChoreography.pdf>>
>  <<PlaceOrderChoreography.xml>>
>
>Director, Product Management, Web Services
>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 Sunday, 6 April 2003 17:57:59 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:00:58 UTC