||It has been suggested that Web Service Choreography be merged into this article. (Discuss) Proposed since August 2011.|
Service choreography is a form of service composition[clarification needed] in which the interaction protocol between several partner services[clarification needed] is defined from a global perspective. The intuition underlying the notion of service choreography can be summarised as follows:
“Dancers dance following a global scenario without a single point of control"
That is, at run-time each participant in a service choreography executes its part of it (i.e. its role) according to the behavior of the other participants. A choreography's role specifies the expected messaging behavior of the participants that will play it in terms of the sequencing and timing of the messages that they can consume and produce.
Service choreography and service orchestration
Service choreography is better understood through the comparison with another paradigm of service composition: service orchestration. On one hand, in service choreographies the logic of the message-based interactions among the participants are specified from a global perspective. In service orchestration, on the other hand, the logic is specified from the local point of view of one single participant, called the orchestrator. In the service orchestration language BPEL, for example, the specification of the service orchestration (e.g. the BPEL process file) can be deployed on the service infrastructure (for example a BPEL execution engine like Apache ODE). The deployment of the service orchestration specification creates the composed service.
In a sense, service choreography and orchestrations are two flips of the same coin. On one hand, the roles of a service choreography can be extracted as service orchestrations through a process called projection. Through projection it is possible to realize skeletons, i.e. incomplete service orchestrations that can be used as baselines to realize the web services that participate to the service choreography. On the other hand, already existing service orchestrations may be composed in service choreographies.
Enactment of service choreographies
Service choreographies are not executed: they are enacted. A service choreography is enacted when its participants execute their roles. That is, unlike service orchestration, service choreographies are not run by some engine on the service infrastructure, but they “happen" when their roles are executed. This is because the logic of the service choreography is specified from a global point of view, and thus it is not realized by one single service like in service orchestration.
The key question which much of the research into choreography seeks to answer is this: Suppose a global choreography is constructed that describes the possible interactions between the participants in a collaboration. What conditions does the choreography need to obey if it is to be guaranteed that the collaboration succeeds? Here, succeeds means that the emergent behaviour that results when the collaboration is enacted, with each participant acting independently according to its own skeleton, exactly follows the choreography from which the skeletons were originally projected. When this is the case, the choreography is said to be realizable. In general, determining realizability of a choreography is a non-trivial question, particularly where the collaboration uses asynchronous messaging and it is possible for different participants to send messages simultaneously.
Service choreography languages
In the ambit of the specifications concerning Web services, the following specifications have focused on defining languages to model service choreographies:
- Web Service Choreography Description Language (WS-CDL) is a XML-based specification from the W3C for modelling choreographies using constructs inspired by Pi calculus
- Web Service Choreography Interface (WSCI) is an XML-based specification that was put forward to the W3C by Intalio, Sun Microsystems, BEA Systems and SAP AG, and that served as input to the Web Service Choreography Description Language (WS-CDL)
Academic proposals for service choreography languages include:
Moreover, a number of service choreography formalisms have been proposed based on:
- Petri Nets, for example Interaction Petri Nets and Open Workflow Nets
- Finite State Machines
- Guarded Automata
- Timed Automata
- Pi calculus
- Process calculi
Paradigms of Service choreographies
Service choreographies specify message-based interactions among participants from a global perspective. In the same way as programming languages can be grouped into programming paradigms, service choreography languages can be grouped in ``styles:
- Interaction Modelling: the logic of the choreography is specified as a workflow in which the activities represent the message exchanges between the participants  (for example Web Service Choreography Description Language (WS-CDL) and Let's Dance)
- Interconnected Interfaces Modelling: the logic of the choreography is split across its participants through the roles they play (i.e. their expected messaging behavior). The roles are connected using message flows, channels, or equivalent constructs (this is for example the case of BPEL4Chor)
Research Projects on Choreographies
There are several active research projects on the topic of service choreography.
- S-Cube Knowledge Model: Service Choreography
- Chris Peltz: Web Services Orchestration and Choreography. IEEE Computer (COMPUTER) 36(10):46-52 (2003)
- Jianwen Su, Tevfik Bultan, Xiang Fu, Xiangpeng Zhao: Towards a Theory of Web Service Choreographies. WS-FM 2007:1-16
- Hongli Yang, Xiangpeng Zhao, Chao Cai, Zongyan Qiu: Exploring the Connection of Choreography and Orchestration with Exception Handling and Finalization/Compensation. FORTE 2007:81-96
- Howard Foster, Sebastián Uchitel, Jeff Magee, Jeff Kramer: Model-Based Analysis of Obligations in Web Service Choreography. AICT/ICIW 2006:149
- Ashley McNeile: Protocol Contracts with Application to Choreographed Multiparty Collaborations. Service Oriented Computing and Applications Volume 4, Number 2, 109-136 (2010)
- Jack Vaughan: BPMN 2.0 adds notation to handle BPM choreography. SearchSOA.com, 22 Oct 2009
- Johannes Maria Zaha, Alistair P. Barros, Marlon Dumas, Arthur H. M. ter Hofstede: Let's Dance: A Language for Service Behavior Modeling. OTM Conferences 2006:145-162
- Gero Decker, Oliver Kopp, Frank Leymann, Mathias Weske: BPEL4Chor: Extending BPEL for Modeling Choreographies. ICWS 2007:296-303
- Gero Decker, Mathias Weske: Local Enforceability in Interaction Petri Nets. BPM 2007:305-319
- Karsten Schmidt: Controllability of Open Workflow Nets. EMISA 2005:236-249
- Nadia Busi, Roberto Gorrieri, Claudio Guidi, Roberto Lucchi, Gianluigi Zavattaro: Choreography and Orchestration Conformance for System Design. COORDINATION 2006:63-81
- Tevfik Bultan, Jianwen Su, Xiang Fu: Analyzing Conversations of Web Services. IEEE Internet Computing (INTERNET) 10(1):18-25 (2006)
- Michele Mancioppi, Manuel Carro, Willem-Jan van den Heuvel, Mike P. Papazoglou: Sound Multi-party Business Protocols for Service Networks. ICSOC 2008:302-316
- Adam Barker, Christopher D. Walton, David Robertson: Choreographing Web Services. IEEE Transactions on Services Computing, volume 2, number 2, pages 152-166, IEEE Computer Society, April–June 2009
- ShuiGuang Deng, Zhaohui Wu, Mengchu Zhou, Ying Li, Jian Wu: Modeling Service Compatibility with Pi-calculus for Choreography. ER 2006:26-39
- Paolo Besana, Adam Barker: An Executable Calculus for Service Choreography. OTM Conferences 2009:373-380
- Raman Kazhamiakin, Marco Pistore: Analysis of Realizability Conditions for Web Service Choreographies. FORTE 2006:61-76
- Zongyan Qiu, Xiangpeng Zhao, Chao Cai, Hongli Yang: Towards the theoretical foundation of choreography. WWW 2007:973-982
- Gero Decker, Oliver Kopp, Alistair P. Barros: An Introduction to Service Choreographies (Servicechoreographien - eine Einführung). it - Information Technology (IT) 50(2):122-127 (2008)
- S-Cube Knowledge Model: Interaction Choreography Model
- S-Cube Knowledge Model: Interconnected Interface Choreography Model
- BPEL - Business Process Execution Language, OASIS standard
- Web Service Choreography Interface - A specification for service choreography language put forward by Intalio, Sun Microsystems, BEA Systems and SAP AG
- Web Service Choreography Description Language - A language for describing choreographies developed in the scope of the W3C