Skip to content

An Orchestration is a triple (E, {P₁, ..., Pₙ}, Π) — a central coordinator E, a set of subordinate participants {P₁, ..., Pₙ}, and an interaction protocol Π — where E alone holds the global view of the process and coordinates participants by invoking them explicitly. The defining structure: orchestration is centralized coordination — E issues commands; participants respond. Orchestration contrasts with choreography: in a choreography no central controller exists; each participant knows only its local protocol and interacts directly with others. The orchestration/choreography distinction captures the axis between imperative (orchestrator commands) and declarative (global protocol, locally realized) coordination.
Table of contents

Orchestration

Formal definition

An Orchestration is a triple (E,P,Π)(\mathcal{E}, \mathcal{P}, \Pi):

(E:Orchestrator,  P={P1,,Pn}:Participants,  Π:InteractionProtocol)(\mathcal{E} : \mathrm{Orchestrator},\; \mathcal{P} = \{P_1, \ldots, P_n\} : \mathrm{Participants},\; \Pi : \mathrm{InteractionProtocol})

where:

  • E\mathcal{E} is the orchestrator — the central coordinator that drives the orchestration; E\mathcal{E} has a complete view of the process and is responsible for invoking participants in the right order, passing data between them, handling responses, and managing exceptions; the orchestrator is the locus of control — all coordination passes through it
  • P={P1,,Pn}\mathcal{P} = \{P_1, \ldots, P_n\} is the participant set — the services or agents the orchestrator coordinates; each PiP_i exposes an interface of invocable operations but has no knowledge of the overall workflow; from each PiP_i’s perspective, it receives a request from E\mathcal{E} and returns a response; the participant’s behavior is local and reactive — it does not initiate coordination
  • Π\Pi is the interaction protocol — the specification of how E\mathcal{E} coordinates P\mathcal{P}; Π\Pi specifies: the sequence of invocations (which PiP_i is invoked when), the data flow (which outputs become inputs), the control flow (sequential, parallel, conditional, iterative routing), and exception handling

Two invariants. (E,P,Π)(\mathcal{E}, \mathcal{P}, \Pi) is an orchestration iff:

  1. Centralized control: E\mathcal{E} is the sole controller of the coordination. Every interaction between participants passes through or is mediated by E\mathcal{E}; no PiP_i directly invokes another PjP_j as part of the orchestrated process. The control flow lives in E\mathcal{E}’s protocol, not in the participants. This is the defining distinction from choreography: in an orchestration, Π\Pi is implemented by E\mathcal{E}; in a choreography, Π\Pi is distributed across all participants.

  2. Participant opacity: each PiPP_i \in \mathcal{P} is opaque to the other participants — PiP_i knows only its own interface and E\mathcal{E}’s invocations; it does not know about PjP_j for jij \neq i and does not know its position in the overall workflow. Participant opacity makes orchestrations substitutable: PiP_i can be replaced by any service implementing the same interface without modifying any other participant — only E\mathcal{E}’s protocol needs updating.

Orchestration vs choreography

The orchestration/choreography distinction was formalized in the web services context ca. 2002–2004 (W3C Web Services Architecture, 2004; W3C Web Services Choreography Description Language, 2004):

Orchestration (imperative): a central process E\mathcal{E} manages the overall workflow. E\mathcal{E} invokes services, handles responses, manages state, and drives the process to completion. BPEL (WS-BPEL 2.0) is the standard orchestration language: a BPEL process is the orchestrator; the services it calls are participants.

Choreography (declarative): a decentralized protocol that each participant implements locally. There is no orchestrator; each participant knows its local protocol (what messages to send and receive, and when) and interacts directly with other participants. WS-CDL (Web Services Choreography Description Language) specifies choreographies as global interaction patterns from which local protocols can be derived.

The formal difference in terms of process algebra:

  • Orchestration: EP1Pn\mathcal{E} \mid P_1 \mid \cdots \mid P_n where E\mathcal{E} is an active process driving the PiP_i as reactive services
  • Choreography: P1PnP_1 \mid \cdots \mid P_n where each PiP_i is a process with a locally specified protocol; no E\mathcal{E} exists as a separate entity

Milner: CCS and π\pi-calculus

Robin Milner’s process calculi provide the formal foundation for both orchestration and choreography:

CCS (A Calculus of Communicating Systems, 1980): processes communicate by synchronizing on shared channel names. PQP \mid Q is parallel composition; PP and QQ synchronize on complementary actions aa and aˉ\bar{a}. An orchestration is a CCS process EP1Pn\mathcal{E} \mid P_1 \mid \cdots \mid P_n where E\mathcal{E} sends on channel aia_i to which PiP_i listens on aˉi\bar{a}_i.

The π\pi-calculus (A Calculus of Mobile Processes, Milner, Parrow, Walker 1992): extends CCS with name-passing — channel references can be sent as message payloads, enabling dynamic binding. An orchestrator E\mathcal{E} can receive a channel reference to a participant at runtime, invoke it, and forward the result — modeling dynamic service orchestration where participants are discovered and bound at runtime. The π\pi-calculus’s scope extrusion rule (νx(PQ)Rνx(PQR)\nu x (P \mid Q) \mid R \equiv \nu x (P \mid Q \mid R) when xx free in RR after extrusion) formalizes how new communication channels are shared between the orchestrator and new participants.

Bisimulation for orchestrations: two orchestration processes are equivalent iff they are bisimilar — no external observer (participant) can distinguish them. The labeled bisimulation in CCS/π-calculus gives the right equivalence: two orchestrations that produce the same observable behaviors (same invocations on participants, same responses handled) are bisimilar.

Honda, Carbone, and Yoshida: multiparty session types

Kohei Honda (Language Primitives and Type Discipline for Structured Communication-Based Programming, 1998, with Vasconcelos and Kubo), and Carbone, Honda, Yoshida (Structured Communication-Centred Programming for Web Services, 2008) developed multiparty session types as the formal type theory for choreographic protocols:

A global type GG specifies the communication protocol for participants {p1,,pn}\{p_1, \ldots, p_n\}:

  • pq:T.Gp \to q : \langle T \rangle . G': pp sends a value of type TT to qq, then GG' continues
  • pq:{li:Gi}iIp \to q : \{l_i : G_i\}_{i \in I}: pp selects label lil_i for qq, and GiG_i continues
  • μX.G\mu X. G: recursive protocol

Projection GrG \upharpoonright r: the local type for participant rr extracted from global type GGrr’s view of the protocol:

(pq:{li:Gi}iI)r={{li:Gir}iIif r=p (internal choice: r sends)&{li:Gir}iIif r=q (external choice: r receives)mergeiI(Gir)otherwise (r uninvolved; merge must be defined)(p \to q : \{l_i : G_i\}_{i \in I}) \upharpoonright r = \begin{cases} \oplus\{l_i : G_i \upharpoonright r\}_{i \in I} & \text{if } r = p \text{ (internal choice: } r \text{ sends)} \\ \&\{l_i : G_i \upharpoonright r\}_{i \in I} & \text{if } r = q \text{ (external choice: } r \text{ receives)} \\ \mathrm{merge}_{i \in I}(G_i \upharpoonright r) & \text{otherwise (}r\text{ uninvolved; merge must be defined)} \end{cases}

The global type GG is projectable iff the merge operation is defined for all uninvolved participants. A well-typed process system rPr\prod_r P_r satisfies global type GG iff each PrP_r implements GrG \upharpoonright r.

Key theorems (Honda, Yoshida & Carbone, JACM 63(1), 2016): well-typed multiparty session processes satisfy (i) subject reduction — type is preserved under reduction; (ii) progress — no deadlock; (iii) projection soundness — if GG is projectable and each participant implements its local type, the system is communication-safe.

The orchestration-choreography duality: every orchestrated process can be expressed as a choreographic global type, and every choreography can be compiled to an orchestrated implementation. The duality is formal: the orchestrator E\mathcal{E}’s protocol corresponds to one participant’s local type in the choreographic description; “rotating” which participant acts as the controller yields the orchestration from the choreography. Honda et al.’s key result: a choreographic global type GG can always be compiled to an executable orchestration (with a designated “orchestrating” participant implementing GG \upharpoonright orchestrator).

Open questions

  • Whether the orchestration/choreography duality is a formal categorical duality — whether orchestrations and choreographies are dual objects in some category of distributed process specifications, related by a duality functor, and whether the projection from choreography to orchestration (extracting the orchestrator’s local type) is this functor’s action.
  • Whether the soundness conditions for orchestration (the orchestrator correctly handles all possible participant responses, including faults) and choreography (the global type projects correctly to all local types without communication mismatches) unify to a single correctness criterion in the π-calculus or session type setting.
  • Whether multiparty session types have a sheaf-theoretic formulation — whether a global type is a global section of a presheaf over the history site (the protocol as consistent local data), and whether projection is the restriction map in the presheaf.
  • Whether the BPEL compensation mechanism — reversing committed work when a fault occurs — has a categorical formulation as a monad (the compensation monad), where binding corresponds to recording compensation actions and the monad’s unit/multiplication handle normal and compensated execution.

Relations

Ast
Date created
Date modified
Defines
Orchestration
Interaction protocol
Relational universe morphism
Orchestrator
Relational universe
Output
Relational universe
Participant set
Relational universe
Related
Workflow, plan, process, service, choreography, bpel, session type
Referenced by