Illustrating Choreography and Orchestration

by Jim Alateras

The difference between orchestration and choreography boils down to *perspective*. This is best illustrated by the diagram below, which depicts three participants collaborating in a business process (i.e. purchase and ship a book).

Choreography is concerned with all the message exchanges between all the participants engaged in the process. It's a birds-eye perspective of the process. Orchestration, on the other hand is only interested with the message changes from the perspective of a single participant. Therefore in the diagram below, we have the yellow circle which represents the birds-eye perspective and the red ovals, which represent each participant's perspective.


In the specification space WS-CDL could be used to specify the choreography and WS-BPEL the orchestration. In fact once we have a WS-CDL document of the process we should be able to generate the skeleton WS-BPEL documents for each participant.


Jim Webber
2006-07-04 16:09:56
Hey Jim,

SSDL offers this functionality too but without having to resort to N levels of indrection in N specifications... :-)


Steve Ross-Talbot
2007-11-20 13:03:12
Spot on. I think you have described it exactly. I would only add that it is a matter of abstraction. WS-CDL is position at a level of abstraction that makes it simply to express the bird-eye view. Whereas WS-BPEL (and indeed Java and other end point specific languages) do not make it so easy. It is akin to the difference between Java and Assembler. They both work as languages but one is more abstract than the other and this in turn gives benefits because the abstraction more closely matches the problem domain without loss of expression. WS-CDL is much the same for distributed systems and any generic SOA.