Skip to main content

Node Operations

This document describes every property available in the DMN Decision Table node as seen in the n8n UI.

For complete manual, JSON, and DMN XML configurations, see Table source examples.

Node Properties​

PropertyTypeRequiredDefaultDescription
Table SourceoptionsYesBuild ManuallyWhere the decision table definition comes from (manual, json, dmnXml)
Decision IDstringNo—Label shown in the subtitle; also selects the decision when Table Source is DMN XML
Table VersionstringNo—Optional version label. Informational only
Hit PolicyoptionsYesFIRSTHow multiple matching rules are resolved. Shown only for manual tables
Collect AggregationoptionsYesNONEHow COLLECT combines matching outputs. Shown only for manual COLLECT tables
InputsfixedCollectionNo—Decision inputs (Name, Type, Value). Empty Value reads from the item JSON by name; a set Value (constant or per-item expression) overrides it. Falsy values like 0/false still apply. Shown only for manual tables
OutputsfixedCollectionNo—Decision outputs, written to each item. Shown only for manual tables
RulesfixedCollectionNo—Rules evaluated top to bottom; empty cells match anything. Shown only for manual tables
Table JSONjsonYes—Full table (hitPolicy, inputs, outputs, rules, defaultOutput?, aggregation?, outputPriorities?). Shown only for JSON source
DMN XMLstringYes—DMN 1.x XML source. Shown only for DMN XML source
Default Output EntriesfixedCollectionNo—Emitted on no match when No Match Behavior is Use Default Output. Each entry names a declared output and holds a value parsed like rule output values (bare text needs no quotes for string outputs); values support per-item expressions. Entries override the embedded default; an empty list falls back to it. Shown only for manual tables
Default Output (JSON)jsonNo{}Same as Default Output Entries but as a JSON object; a non-empty value overrides the embedded default. When empty, fitting entries still apply, then the embedded default. Supports per-item expressions. Shown only for JSON and DMN XML sources
No Match BehavioroptionsYesUse Default OutputWhat to do when no rule matches (default, null, error). Fixed UI option
Output ModeoptionsYesMerge Into ItemHow outputs are written (merge, single, envelope). Envelope nests decisionId, tableVersion, and data under Result Key. Fixed UI option
Result KeystringNo(empty)Key holding the result object (the whole envelope in envelope mode). Empty merges into the item instead. Shown for Single Result Key and envelope modes

The node subtitle displays the decision as ={{$parameter["decisionId"] || "Decision table"}}.

Hit Policy​

FIRST, UNIQUE, ANY, PRIORITY, COLLECT (with SUM / COUNT / MIN / MAX aggregation), RULE ORDER, OUTPUT ORDER. See the README for semantics. PRIORITY and OUTPUT ORDER need output value ordering to differ from FIRST / RULE ORDER.

Rules​

Each rule holds an optional informational Description (builder note, like DMN rule annotations; imported from DMN <description> and never affecting matching), input entries (inputName + cell expression, see cell expressions) and output entries (outputName + value, parsed as JSON except string/date outputs which also accept bare text). In manual and JSON tables, an input with no entry is a wildcard. XML cells are positional and must match the declared column counts exactly; use an explicit empty cell for a wildcard. Every rule must define every output (use null for an empty result). Duplicate entries and references to undeclared inputs/outputs are rejected.

Manual collections use n8n's object wrappers: Inputs/Outputs/Default Output Entries contain definitions, Rules contains entries, and nested Input/Output Entries contain values. Each option holds an array of row objects. An omitted optional collection, {}, or an empty row array is valid; a populated malformed container is an error, not an empty collection or wildcard. Inputs and outputs must still be declared, and every rule must supply all outputs.

Comparison operands, range bounds and date/time constructor arguments must be supported literals. General functions and computed arguments are rejected, including inside lists or not(). Errors identify the rule and input; see error and pairing behavior and release notes for compatibility details.