I am really excited to announce that in the upcoming release we are going to introduce a Decision Table feature.

”Decision Tables are a precise, yet compact way to model complicated logic”
– Wikipedia

What`s the benefit of a Decision Table?

Decision Tables are an approach to modelling and defining application logic. The advantage is that business analysts and domain experts will understand the rule definition with very minimal information about the context and the technology used.
Let’s consider the following table:

[table style=”background-color: #eeeeee” class=”table table-bordered” th=”0″]
Decision person growing state,
Input person,
Condition,Action
(person.Age>=$1) and (person.Age<=$2),call person.SetTitle($value)
Min,Max“[attr style=”text-align:center”], Name[attr style=”text-align:center”]
“0,3”,infant
“4,6”,kid
“7,18”,teen
“19,23”,young
“24,99999”,adult
[/table]

This table answers the question: What are the human growth stages based on age?

Your application can now simply load this Decision Table and our business rule engine will execute the Decision Table. In this example, when you execute the Decision Table above and your application passes an object (person) to the rule engine, the Title of the object will be set automatically by the Decision Table.
Or for example, let’s answer this question: How much is the tax rate applied to a person based on income?

[table style=”background-color: #eeeeee” class=”table table-bordered” th=”0″]
Decision find tax rate,,
Input person,,
Condition,Condition,Action
person.Income>=$value,person.Income<=$value,set person.TaxRate $value
From[attr style=”text-align:center”],To[attr style=”text-align:center”],Rate[attr style=”text-align:center”]
0,18200,0
18201,37000,19
37001,80000,32.5
80001,180000,37
180001,,45
[/table]

How to define Decision Tables in our Rule Engine?

In this version there are two ways you can model a Decision Table and have the Rule Engine execute these.

  1. Using Excel applications: Ms Excel, Google document/drive, Open office, etc.
  2. Using a builder class to generate the Decision Table programmatically. This option allows you to generate a Decision Table directly from the GUI your application provides (e.g., your ASP.NET Grid can simply represent a Decision Table in your application).

Our first version of decision table supports:

  1. Vertical decision table
  2. Multi value cell
  3. Empty cell
  4. Condition column
  5. Action column
  6. Set variable
  7. Call method
  8. Input, Output variables
  9. Import types

When a Decision Table is loaded as an executable model, the engine transforms the table to a Validation logic with multiple Logic sections. Therefore, executing a Decision Table is straight forward. You simply can create a ValidatorEngine and pass your input object vy calling the Run method on the rule engine.

It is very simple to create complex logic as a Decision Table. I hope you enjoy the Decision Table in the coming release.

Last updated January 7th, 2020 at 11:18 am, Published August 20th, 2013 at 11:18 am