Shipping cost (DMN)
Shipping rules are the textbook decision table: two inputs, banded values, and a result that must be exactly right.
#What this example shows
Numeric bands expressed as FEEL ranges.
A list value, matching several destinations in one rule.
An annotation column carrying the reasoning.
#Columns
Column | Type and meaning |
|---|---|
Zone (input) | string: domestic, eu or rest |
Weight kg (input) | number: parcel weight |
Cost (output) | number: shipping charge |
#The decision table
Hit policy: U (Unique). Cells are FEEL expressions, so a range, a list or a negation is a legal value; a dash means the input is irrelevant to that rule.
Zone | Weight kg | Cost | Annotation |
|---|---|---|---|
"domestic" | <= 1 | 3.95 | Letter rate |
"domestic" | (1..5] | 6.50 | |
"domestic" | > 5 | 11.00 | Courier |
"eu" | <= 1 | 8.95 | |
"eu" | (1..5] | 14.50 | |
"eu" | > 5 | 24.00 | |
"rest" | <= 1 | 12.95 | |
"rest" | (1..5] | 22.50 | |
"rest" | > 5 | 39.00 | Quote on request above 20kg |
#Making it your own
Note the bracket style: (1..5] is over 1 and up to 5, which avoids gaps and overlaps.
Add a dimensional weight input if volume matters as much as mass.
Keep the annotation column; it is where the reasoning lives.
#Related
The hit policy is the whole decision.
