You build decision tables by adding columns and rows. Each column represents a condition, while rows store corresponding values that the system tests at run time. For example, you can build a decision table to determine shipment costs based on the following conditions:
- The value of the order
- The weight of the parcel
- Whether the shipment is to a foreign country
Each condition is a separate column in the decision table. Additionally, every decision table includes a column that stores results that the decision table returns if all values in a row evaluate to true.
Each row includes cells that store values that the system evaluates at run time. You can insert more than one value in a cell by adding an OR condition, and then the system continues processing a row if any of the values in the cell evaluates to true.
At run time, the system evaluates the rows starting at the topmost row:
- If any condition in a row evaluates to false, processing continues with the next row. The
system ignores the Return column for that row.
Note: You can leave empty cells in a row. Empty cells evaluate to true except when a cell is empty and includes an OR condition. Then, the parser ignores that cell and parses only the cell that contains a value.
- If all the conditions in a row evaluate to true, the system processes the
Actions and Return columns of that row. The
next action depends on how you configure your decision table:
- To return only one result, you can configure processing to end. The system then
returns the value in the Return column as the value of the entire
In scenarios that require only one result, such as estimating delivery costs, when you end processing after receiving the first result, you improve performance and avoid unnecessary computations.
- To return multiple results, you can configure processing to continue through all
remaining rows, performing the Actions and Return calculations for any rows for which
the conditions are all true.
For example, when the decision table returns the email address of a person in a process to approve an expense, the expense might require the approval from more than one person, based on the conditions. Such scenarios require more than one result.
- To return only one result, you can configure processing to end. The system then returns the value in the Return column as the value of the entire rule.
- If all rows in the table evaluate to false, the system returns a default result.
Applying decision tables
You can apply decision tables in the following elements of your application:
- In a flow rule, you can reference a decision table in a decision shape .
For more information, see Adding decisions to processes.
- In an activity, you can evaluate a decision tree by using the
For more information, see Creating an activity.
- A Declare Expression rule can call a decision table.
For more information, see Declare Expression rules - Completing the New or Save As form.
- A collection rule can call a decision table.
Decision table rules are instances of the Rule-Declare-DecisionTable class. Decision tables are part of the Decision category.