# `decision_table` — Entscheidungstabelle (DMN-light) **Zweck:** Ersetzt verschachtelte `if`-Kaskaden durch eine mehrspaltige Entscheidungstabelle. Mehrere Eingabewerte werden Zeile für Zeile gegen Regeln geprüft; die erste (`hit_policy=first`) bzw. alle (`hit_policy=all`) passenden Regeln setzen ihre ``-Variablen. Passt keine Regel, greift optional der ``-Zweig. **Parameter** | Name | Pflicht? | Default | Beschreibung | |---|---|---|---| | `hit_policy` | nein | `first` | `first` = erste passende Regel gewinnt; `all` = alle passenden Regeln, letzte gewinnt bei gleichnamigen Variablen | | `inputs`/`in` (`var`) | **ja** | — | Eingabespalten in Reihenfolge; `var` ist der Kontext-Variablenname. Reihenfolge = Reihenfolge der `` je Regel | | `rules`/`rule` | **ja** | — | Regelzeilen; jede muss genau so viele `` haben wie es ``-Spalten gibt | | `when` (`op`) | — | `op=eq` | Vergleich je Spalte; siehe Operatoren unten | | `set` (`name`) | — | — | Zu setzende Kontextvariable der Treffer-Regel | | `default`/`set` | nein | — | Greift, wenn keine Regel passt | Operatoren (`op`): `eq`, `ne` (Gleichheit, numerisch wenn beide Seiten numerisch, sonst String case-insensitiv), `gt`, `gte`, `lt`, `lte` (numerisch), `contains` (Teilstring, case-insensitiv), `regex` (PCRE ohne Delimiter), `empty`/`notempty` (Wert leer/nicht leer), `any` (passt immer, Platzhalter-Spalte). **Eingangswerte:** Die unter `` genannten Kontextvariablen; Platzhalter in ``- und ``-Werten. **Ausgangswerte:** - alle ``-Variablen der Treffer-Regel(n) - `_matched` — Anzahl passender Regeln (`0` = Default griff bzw. nichts) **XML-Beispiel** ```xml first 5000 TG1 geschaeftsfuehrer 2 5000 sachgebietsleiter registratur ``` **Hinweis:** Jede Regel muss exakt so viele ``-Spalten haben wie `` definiert; sonst endet der Task mit Fehler. Numerische Vergleiche akzeptieren Dezimalkomma (`1234,56`).