Problem solve Get help with specific problems with your technologies, process and projects.

SOA orchestration and choreography

Sri Nagabhirava discusses the differences between orchestration and choreography and clarifies key design factors to achieve both.

What is the difference between orchestration and choreography and what are the different design factors an architect needs to take into account to achieve them?

The orchestration and choreography are both critical pieces of collaboration layer of service orientation (SOA+BPM). Each of them have a distinct purpose but need to perform together to achieve service orientation. However there seems to be lot of confusion on the use of these two terms. The terms have very close resemblance in meaning to the real world musical which has both Orchestra and Choreography.

OMG refers to orchestration as "the modeling of directed, internal business processes" and choreography as "the specification of interactions between autonomous processes".

Orchestration in business processes is a series of activities in a controlled work flow – typically involving one single swim lane. Where as choreography relates to observable public exchange of messages, rules of interaction and agreements between two or more business process end points and can address the collaboration among multiple swim lanes.

There are several design factors which need to be addressed to achieve orchestration and choreography.

The key design attributes for Orchestration include participant and role definition, variables, properties which enable conversation, fault handlers for exception processing, compensation handlers for error recovery and event handlers to respond to concurrent events with the process itself and set of activities.

For Choreography, message structure, asynchronous communication, message rules, invocation, events and event handling are some of the important design factors.

Dig Deeper on Topics Archive

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.