Altova MapForce 2026 Professional Edition

A decision table is a set of rules that evaluate one or more input conditions and provide the corresponding output value(s). A decision table has the following characteristics:

 

Each row in a decision table represents a rule.

Each rule consists of conditions (inputs) and actions (outputs).

If all the input conditions of a rule are true, the corresponding action will be performed if it satisfies the hit policy.

For each decision table, there is a hit policy that defines which rule(s) are implemented and which outputs are generated. For details, see Hit Policy below.

 

Decision tables are commonly used in process automation and decision management systems to:

 

Simplify complex decision logic by breaking it into manageable rules

Ensure consistency across different scenarios by using a centralized rule set

Enable non-technical users to define and manage logic without coding

 

How to add a Decision Table to a mapping

To add a Decision Table component to a mapping, take one of the steps below:

 

Click the menu item Insert | Decision Table.

Click the ic-DecisionTable toolbar command.

Select the Decision Table component in the Processing tab of the Component Gallery (can be accessed via the ic-AddCompFromGallery toolbar command).

 

After you have taken one of the steps above, the Decision Table component appears in the mapping (screenshot below).

MF_DecisionTableComponent

 

Structure of a Decision Table

Double-clicking a Decision Table's header opens this component's properties (screenshot below). The dialog is organized as follows:

 

The first half of the Decision Table Properties dialog describes the syntax and provides examples of various conditions (the Show/Hide Sample Conditions button).

The second half of the dialog enables you to configure input and output values that will constitute the rules.

mf_decisiontableproperties_zoom60

Define inputs/outputs

By default, there is one input column and one output column. To add more inputs and/or outputs:

 

1.Return to the Decision Table component and click the relevant ( gui_add_function_parameter ) icon.

2.Edit the newly created input/output as needed in the Decision Table Properties dialog.

 

For each input and output, set an appropriate data type, which you can do via the dropdown list of an input/output (screenshot below). You can also rename any column by clicking the pen icon or by double-clicking the relevant column header. To add or edit a value, double-click the relevant cell and enter the value.

 

Context menu of output cells

Right-clicking a cell in the output column (Discount in our case) opens the cell's context menu (screenshot below). This menu enables you to:

 

Enter a fixed value in an output cell (Literal value)

Set an output value to null

Pass values from existing input columns if the data types are compatible

MF_DecisionTableContextMenu

 

Buttons for managing table data

The buttons shown in the table below enable you to manage table data.

 

Button

Description

ic-InsertRow

Inserts a row above the selected row.

ic-DeleteRow

Deletes the selected row permanently.

ic-undo

Reverses the previous action.

ic-redo2

Restores the last undone action.

ic-Cut

Deletes the selected row and copies it to the clipboard.

ic-Copy

Copies the selected cell(s) to the clipboard.

ic-PasteTable

Pastes the copied table from the clipboard.

 

Hit policy

Hit policy determines how to handle inputs that match multiple rules and specifies which outputs to return.

 

First matching rule

The first-matching-rule policy means the following:

 

The Decision Table evaluates rules from top to bottom.

Only the first matching rule is executed.

All subsequent matching rules are ignored.

 

This policy is useful when rules are mutually exclusive or when priority matters.

 

 

All matching rules

The all-matching-rules policy works as follows:

 

The Decision Table evaluates all rules.

Every matching rule is executed, and the outputs are returned as a sequence.

 

This policy is useful when multiple rules should apply simultaneously.

 

 

Example

A bank wants to decide what benefits to give a loan applicant based on two conditions:

 

Credit score

Income level

 

The rules are as follows:

 

Credit Score

Income Level

Action

≥ 750

≥ 50,000

Lower interest rate

≥ 700

≥ 40,000

Higher loan limit

≥ 650

≥ 30,000

Cash bonus

 

For example, a customer has a credit score of 760 and income of 60,000.

 

First-matching rule

The rules are evaluated from top to bottom.

Only Rule 1 applies: Lower interest rate.

 

All-matching rules

All rules that match the conditions apply.

The customer details match all the rules.

The output includes the following sequence: Lower interest rate, higher loan limit, cash bonus.

 

Use-case scenario: Customer discount rules

The example described in this subsection shows how a retail company applies discounts based on customer type and purchase amounts.

 

Mapping

We have created the mapping below to showcase the usage of the Decision Table component.

MF_OrderDiscountsMapping

Source

The source component is a CSV file that contains a list of order details:

 

order_id,customer_id,customer_type,purchase_amount

ORD-1001,CUST-501,VIP,600.00

ORD-1002,CUST-502,Regular,450.00

ORD-1003,CUST-503,New Customer,250.00

ORD-1004,CUST-504,VIP,180.00

ORD-1005,CUST-505,Regular,520.00

ORD-1006,CUST-506,New Customer,150.00

 

Decision Table

The Decision Table applies discount rules based on customer_type and purchase_amount. The screenshot below demonstrates how the discount rules have been defined in the Decision Table. The hit policy is set to First Matching Rule. The "-" sign represents any value.

MF_OrderDiscountsDecisionTable

The rules are evaluated as follows:

 

If the purchase amount of a VIP customer is 500 or more, this customer receives a 30% discount.

If the purchase amount of any customer is 500 or more, this customer receives a 20% discount.

If the purchase amount of a VIP customer is 300 or more, this customer receives a 20% discount.

If the purchase amount of any customer is 300 or more, this customer receives a 10% discount.

If none of the rules above apply, the null value is output.

 

Target

The target component is an SQLite database named Orders that stores information about customer orders. Each row represents a single order and contains the order identifier, the customer, the type of customer, the purchase amount, and the applicable discount. The discount_percentage field is nullable, stores the discount calculated by the Decision Table, and represents the percentage of the purchase amount to be deducted for the order.

 

Output

After running the mapping and writing the data to the database, we get the following output:

MF_OrderDiscountsOutput

Since the orders 1003, 1004, and 1006 do not meet any input conditions in the Decision Table, the discount_percentage values for these orders have been set to null.

 

© 2019-2025 Altova GmbH