Information Requirement Diagram, or in short IRD, is unique to FlexRule in that it allows data logic be composed and reused from smaller building blocks (data operators) visually. The Information Requirement Diagram (IRD) is powered by our rich and dynamic monadic operators and places this power in the hands of everyone with a visualization method to model, simulate and execute data and information logic.

The Information Requirement Diagram is a graph that allows you to transform data into information which will then be used by other consumers. There are tree simple nodes in any IRD graph with two types of associations:

OperatorIRD operator.pngPresents the act of applying an operator on a source of data which would create/generate new set of data as a source to the other nodes of graph. e.g. select, filter…
Input DataIRD input data.pngData used as an input by one or more monadic operators.
Output DataIRD output data.pngDenotes the output of the IRD model at any stage.
InformationIRD information required.pngDenotes relation between nodes that passes a source as an input information to a destination node. Information is the source of the next monadic operator.
KnowledgeIRD knowledge required.pngDenotes relation between nodes that passes source as the processing parameters to a destination node.

Let's have a look at an example and see the Information Requirement Diagram in action. In the below list of cars:

Information Requirement Diagram

Let's find:

All common cars between these two groups: G1 and G2

We have answered this before using monadic operators, but let's see the result in an Information Requirement Diagram.

Input and Output Data

In an IRD we can define as many as inputs and outputs as required. Then we connect different data sources to inputs and the network/graph of operators, and navigate them to the output results.

In this example, we are going to have one input (list of cars) and one output (command and all unique cars).
Information Requirement Diagram

Operator Nodes

There are many different data operators pre-built into an IRD (i.e. Group, Filter, Select, Minus, Union, Intersect, etc.). They can be used as many times as required. All operators must be connected to a source of information. In this example, they need to connect to “Cars”.

For the first step of this task we need to group the cars into two groups/lists by “Group” value. So, let's select Group operator from the toolbox and add it to our model:

Information Requirement Diagram

Associations: Information or Knowledge

There are two types of associations between any node in an IRD, through which it passes information to the next nodes either as it is, or further processes these before passing. As mentioned, all operator nodes must have a source. If the source of a node comes from another node, it is an Information association. Otherwise it is a Knowledge association.
Knowledge ensures the result of a node (operator) is passed to other nodes as known information, which you will see in the next section.

For now, let's connect cars to the group operator by setting the group operator's source:

Information Requirement Diagram

To view the full tutorial please visit

Final Model

After you follow the above tutorial, you can build the full model as shown below, feed in your data and check the results using the data viewer:

Once the execution is finished, you will see the result below in the data viewer:


The Information Requirement Diagram (IRD) is powered by our rich and dynamic monadic operators and gives this power to every one with a visualization method to model, simulate and execute data/information logic.
Now the data logic can be modeled, maintained and executed in a reliable way, and when an update to the model is required, you can simply add more operators, outputs and inputs to the model. No SQL stored procedure, view or hard-coded application logic is required!

* To learn more please visit
* You can download FlexRule v6.3 from and try this tutorial yourself by opening a project called “Collections”.
* To follow the tutorial step-by-step please visit our wiki at

Last updated September 22nd, 2020 at 11:28 am, Published October 17th, 2016 at 11:28 am