- From: Champion, Mike <Mike.Champion@SoftwareAG-USA.com>
- Date: Wed, 16 Oct 2002 21:50:12 -0400
- To: www-ws-arch@w3.org
> -----Original Message-----
> From: Edwin Khodabakchian [mailto:edwink@collaxa.com]
> Sent: Wednesday, October 16, 2002 8:41 PM
> To: 'David Orchard'; www-ws-arch@w3.org
> Subject: RE: Definition of Choreography
>
> Also who is the "client" of that specification? Meaning for example,
> it is:
I'm sure Dave knows far more about this than I do, but here's how I was
thinking about it:
I think of "Choreography" sortof like a policy, not a program. For example,
we probably all have to deal with the travel policy police at our employers
:-( . Mine say that to travel anywhere, I need to get my manager's
approval on a form saying what/where/how much, I need to deal with
such-and-such an online travel service to make all plane, hotel, and car
reservations, I need to submit an expense report spreadsheet, I need to have
given my bank account information to the accountants, etc. I think that's
something like a "choreography" -- it defines the logical interdependencies
and ordering relationships between the messages and services involved in
approving, boooking, and getting reimbursed for travel. I can imagine it
being used sortof like a schema or WSDL document -- to describe the
high-level constraints on a compound web service in a way that various tools
could use to validate that an actual process meets the policy constraints,
to be the inputs into a tool that might prompt for details and generate an
actual workflow, to use by humans to understand how the system works ...
It's not a "program" (workflow, orchestration, business process execution,
whatever). It doesn't define the instructions for HOW to jump through the
hoops, just what the hoops are. To automate a "deal with the travel
bureaucracy" compound web service would be considerably more challenging,
and would clearly require a language at the level of BPEL4WS that would
define the mind-numbing sequence of tasks and the conditions under which one
"branch" or another is taken.
reason = prompt("why are you doing this to yourself?")
destination = prompt("where are you going")
departure = prompt("when do you leave")
return = prompt("when do you return")
tripId = TentativelyBookTravel(destination, departure, return)
estimatedCost = getCost(tripId)
if (estimatedCost > managerApprovalLimit)
approved = getVPApproval(reason, estimatedCost)
else
approved = getManagerApproval(reason, estimatedCost)
if (approved)
confirmTrip(tripId)
else
cancelTrip(tripId)
Of course, all this stuff executes in human time not machine time, and I'm
making it all up anyway :-) But that's my understanding of the usage
scenarios for "choreography" vs "workflow/orchestration/BP execution"
Received on Wednesday, 16 October 2002 21:50:13 UTC