◷ Reading Time: 3 minutes


Orchestration is the automated arrangement, coordination, and management of multiple logic documents in order to produce a desirable outcome. When you have multiple logic documents and would like to connect them together and run them as ‘one piece, you need to model your orchestration logic.

There are multiple ways of orchestrating logic documents:

  1. Using flow
  2. Using a Decision Requirement Diagram – DRD
  3. Coding the Collection of logic documents


Flow logic is a classic example of orchestrating multiple logic documents. You can use any type of logic in a flow:

  1. Validation/Procedural Tree
  1. Flow (other flows – SubFlow)
  2. Decision Requirement Diagram (DRD)
  3. Natural Language (NL)
  4. Decision Table (DT)
  5. Direct expression with no specific logic document (as an activity in flow)
  6. Custom code

Flow is good to orchestrate logic documents based on order of execution.


Opposite to Flow, a DRD or Decision Requirement Diagram (a part of DMN) is a good way to orchestrate logic documents based on dependencies. You can orchestrate the logic documents below:

  1. Validation Tree
  2. Natural Language (NL)
  3. Decision Table (DT)
  4. DRD (other DRDs – SubDRD)


In this approach, you just call the logic documents one-by-one inside your code. When the orchestration logic is simple (i.e., a simple sequence of logic with no transitioning conditions), then you can use this approach.

Here are the steps:

  • Create an engine for each document
  • Inside a loop, call the Run method of the engine

Below is the sample code for this approach:

var documents = new[] {"Rules\\Validation.xml", "Rules\\Calculation.xml"}; 
var engines = documents.Select(doc => RuntimeEngine.FromXml(System.IO.File.OpenRead(doc))); 
foreach (var engine in engines)

Follow the lines below for the code description:

  1. create a list of all of the logic documents you want to process.
  2. create engines for each of the logic documents. You don’t need to repeat this process. Once they are created they can be reused.
  3. Run your logic documents in a loop.
  4. If required, you can use another overload of the Run method to pass objects in and update the objects.
Updated on July 22, 2019

Was this article helpful?

Related Articles