Decision tables with DMN and FEEL
Move business rules out of code and into a table anyone can read: build a discount table, test it, and call it from a process.
In short
- 01
Rules live in a table, not in gateway conditions or worker code.
- 02
Test a table with sample values before a process uses it.
- 03
A business rule task runs the table and stores its outputs as variables.
A decision table takes input values, finds the rule that matches, and returns outputs. DMN is the standard for the table; FEEL is the small expression language used inside its cells.
Example: a discount table
| Region | Amount | → Discount |
|---|---|---|
| "EU" | > 1000 | 0.2 |
| "EU" | - | 0.05 |
| - | - | 0 |
Read each row as a rule. An EU order above 1000 gets 20%; any other EU order gets 5%; everything else gets nothing. A dash means "any value".
What goes in a cell
| Cell | Meaning |
|---|---|
| "EU" | Equals the text EU |
| > 1000 | Greater than 1000 (also <, >=, <=, !=) |
| [100..500] | Between 100 and 500 |
| - | Matches anything |
| amount * 0.1 | An output can be a calculation |
Hit policies
The hit policy decides what happens when more than one rule matches. Orkovia supports the nine DMN hit policies — for example Unique (only one rule may match), First (the first matching rule wins) and Collect (return every match).
Build, test, use
Build the table in Studio
Test it
Call it from a process
curl -X POST http://localhost:3000/api/v1/decisions/<id>/evaluate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"variables": {"region": "EU", "amount": 1500}}'See it on your own process
Book a walkthrough with the Orkovia team.
Keep reading
Test a process before you deploy it: Play mode
Step through a diagram node by node inside the designer, choose gateway branches, and watch variables change — without deploying anything.
Read articleDesigning task forms
Build the forms people fill in during a process: 22 component types, validation, conditional fields, versions and translations.
Read articleMessages, signals and timers explained
Three ways a process can wait for something to happen. When to use each, with examples.
Read article