8.2. Choreography and OrchestrationMany BPM commentators distinguish between the "orchestration" and "choreography" of web services. Both concepts imply coordination or controlthe act of making individuals web services work together to form some coherent overall process. Orchestration, by convention, refers to coordination at the level of a single participant's process, whereas choreography refers to the global view, spanning multiple participants. The distinction at first glance seems arbitrary. After all, are not the English words nearly synonymous? How is the direction of dancers fundamentally different from the arrangement of instruments? The terminology is suspect. Better terms, perhaps, are "subjective" and "objective," or "local" and "global." But regardless of the words used, the need for a distinction is crucial. If modern BPM is about communicating business processes, then understanding the overall communication spanning all the processes is as important as understanding the behavior of any one process. Most BPM languagessuch as BPEL, BPML, BPMN, and XPDLfocus on one process and its interactions. In purchasing, for example, the exchange of messages among buyer, seller, inventory, and credit card company is complex, but BPEL characteristically isolates one of the participants and documents its internal processes and interaction touchpoints. The BPEL approach is fundamentally subjective: if I am a seller, here is my process, and along the way, I talk to the buyer, inventory, and a credit card company. This proclivity is depicted in Figure 8-1. Figure 8-1. Most BPM languages focus on the orchestration of one processThe global view of choreography is different: the seller's internal logic is immaterial. What matters is the protocol: a buyer talks to a seller, who in turn communicates with inventory and the credit card company, as Figure 8-2 shows. Figure 8-2. Choreography describes the global pictureOne major design characteristic of choreography is that interacting participants, being distributed within or across an organization's trusted domain, cooperate by exchanging messages with no dependency on a centralized controller. A choreography definition can generate code skeletons for each participant, as the W3C's choreography documents suggest. A seller, for example, knows from a choreography which web services it is required to listen on and respond to, as well as those it needs to call. This information is enough to create a basic BPEL process, shown in Figure 8-3, with receive and invoke activities marking the web service touchpoints; the rest of the work is providing specific details. Figure 8-3. BPEL skeleton from choreography |