# Build a DMN decision table Building a table is mechanical once the structure is clear: add the input columns, add the output columns, then add one row per rule. Set the hit policy deliberately before writing rules, because it decides what happens when two of them match. --- ## What this is for * Turning a set of business rules into something executable. * Replacing a spreadsheet of rules that nobody can validate. * Documenting rules a business owner will maintain. --- ## How it works | **Action** | **How** | | -------------------- | ------------------------------------------------------------------- | | Add an input column | Set its expression and its type reference. | | Add an output column | One or more, each with a type. | | Allowed values | Constrain a column to a list, which turns typos into errors. | | Add rules | One row each, with a value, a range, or a dash in every input cell. | | Hit policy | Top-left. Unique is the safest default. | | Annotation column | Right-most. Notes that do not affect the result. | --- ## A few things that catch people out * Set allowed values where you can. It is the difference between a validated table and a spreadsheet. * A dash means the input is irrelevant to that rule. An empty cell is not the same thing. * With Unique, overlapping rules become a visible error, which is exactly what you want. --- ## Related [DMN literal expressionsWhen a table is the wrong shape.](https://help.gocapable.com/diagrams/dmn-literal-expressions.html) [DMN properties panelNames, ids, documentation and Camunda fields.](https://help.gocapable.com/diagrams/dmn-properties-panel.html) [DMN editorBack to the editor overview.](https://help.gocapable.com/diagrams/dmn-editor.html) --- _Draw the map before writing the rules._