In Chapter 4, we talked about how to chain orchestrations together. The simplest way to do so (from a developer's perspective) is to use the Start Orchestration or Call Orchestration shapes and explicitly invoke one orchestration from another. While this strategy is easy to develop and allows for transfer of more than just message data (such as variables, ports), it's also a very tightly-coupled and inflexible way to connect stages of a business process. Ideally, you should pursue a route of Message Box direct binding which enables fully encapsulated, reusable orchestrations that can be invoked by a wide number of clients (for example, services or other orchestrations).
What if your business process consists of a number of discrete steps that are subject to change over time? That is, let's assume a process by which an inbound "adverse event" must pass through a set of business logic and human review stages prior to commitment into the enterprise...