Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.5 KiB
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 <set>-Variablen. Passt keine Regel, greift optional der <default>-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 <when> je Regel |
rules/rule |
ja | — | Regelzeilen; jede muss genau so viele <when> haben wie es <in>-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 <in var="…"/> genannten Kontextvariablen; Platzhalter in <when>- und <set>-Werten.
Ausgangswerte:
- alle
<set>-Variablen der Treffer-Regel(n) <task_id>_matched— Anzahl passender Regeln (0= Default griff bzw. nichts)
XML-Beispiel
<task type="decision_table" id="freigabe_regel">
<config>
<hit_policy>first</hit_policy>
<inputs>
<in var="summe"/>
<in var="tg"/>
</inputs>
<rules>
<rule>
<when op="gt">5000</when>
<when op="eq">TG1</when>
<set name="freigeber">geschaeftsfuehrer</set>
<set name="stufe">2</set>
</rule>
<rule>
<when op="lte">5000</when>
<when op="any"/>
<set name="freigeber">sachgebietsleiter</set>
</rule>
</rules>
<default>
<set name="freigeber">registratur</set>
</default>
</config>
</task>
Hinweis: Jede Regel muss exakt so viele <when>-Spalten haben wie <inputs> definiert; sonst endet der Task mit Fehler. Numerische Vergleiche akzeptieren Dezimalkomma (1234,56).