The Process Manager pattern (www.enterpriseintegrationpatterns.com/ProcessManager.html) is another approach to solving the problem of large, long-running business processes. Instead of implementing a loosely coupled approach using the MessageBox (as discussed previously), you can use a parent orchestration to control which orchestration should be called next.
When finished, each child orchestration then returns control to the parent orchestration, which makes a decision on the next orchestration to be called. This decision can be implemented via configuration or the Rules Engine, thus enabling on-the-fly modification of your business process.
Because you require this return path to the calling orchestration, you cannot use the approach detailed before. Therefore, you must instead invoke orchestrations directly, but not in such a way that binds the parent orchestration to a specific orchestration/assembly version (which, of course, would prevent us being able to upgrade one piece of the solution).
Using a technique called inverse direct partner binding, you can enable this scenario, which is put to great use in the Business Process Management (BPM) scenario in Chapter 12.