This documentation site is for previous versions. Visit our new documentation site for current releases.

This content has been archived and is no longer being updated.

Links may not function; however, this content may be relevant to outdated versions of the product.

# Decision tables

Updated on March 11, 2021

Decision tables derive a value that has one of a few possible outcomes, where each outcome can result from a test of a condition that includes multiple variables. A decision table lists two or more rows, and each row contains test conditions, optional actions, and a result.

Decision tables are appropriate for evaluations that include more elements compared to simple true/false evaluations. For example, you can use a decision table to estimate a car insurance payment based on the age of a driver, age of a car, and make of a car.

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 rule.

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.

• If all rows in the table evaluate to false, the system returns a default result.
For example: In the following figure, the decision table calculates the shipment cost in an online shop. The cost depends on the value of the order, the weight of the parcel, and whether the shipment is to a foreign country. If the order value is less than \$500, and the parcel weight is less than 3kg, and the shipment is to the same country, then the shipment cost is \$20. If any of these values evaluate to false, the system moves to the next row. If all rows evaluate to false, the system returns the default value of \$60 for the shipment cost:

## Applying decision tables

You can apply decision tables in the following elements of your application:

## Category

Decision table rules are instances of the Rule-Declare-DecisionTable class. Decision tables are part of the Decision category.

## Have a question? Get answers now.

Visit the Support Center to ask questions, engage in discussions, share ideas, and help others.

Did you find this content helpful?

Want to help us improve this content?