设为首页 | 收藏本站
18515218668

解读DMN决策表

发表时间:2026-04-02 15:41作者:Together规则引擎
文章附图

在 DMN(决策模型与符号)规范中,决策表 (Decision Table) 是一种极其重要的框式表达式,它通过表格形式将复杂的业务决策逻辑离散化,建立起输入组合与输出结果之间的映射关系。

1.png

以下是对决策表的详细解析:

1. 基本定义与构成

决策表是一种标准化的符号,用于表达决策逻辑,它包含且仅包含确定输出所需的全部输入。

l   信息项目名称 (Information Item name): 通常是该决策表所属的决策或业务知识模型的名称。

l   输入子句(Input Clauses): 由输入表达式(如“客户状态”)和可选的允许值范围组成。

l   输出子句 (Output Clauses): 包含名称和可选的允许输出值列表。如果只有一个输出,名称可省略;两个及以上则称为输出组件。

l   注释子句 (Annotation Clauses): 零个或多个命名列,用于记录规则的说明性文字(如“政策依据”),不参与逻辑计算。

l   决策规则 (Decision Rules): 表中的每一行(或列)代表一条规则,由特定的输入条目和对应的输出条目组成。

2. 表格布局与展示 (Orientation)

根据逻辑的复杂程度和展示需求,决策表有三种标准方向:

l   水平方向 (Horizontal): 规则作为行,子句作为列。这是最常用的格式,输入位于左侧,输出位于右侧。

l   垂直方向 (Vertical): 规则作为列,子句作为行。适用于规则较多而输入较少的情况。

l   交叉表 (Crosstab): 由两个输入维度组成的二维网格,输出位于右下角。交叉表默认必须是完备且不重叠的(即 Unique 策略)。

3. 规则匹配逻辑

l   匹配机制: 当所有输入表达式的值都满足对应规则的输入条目时,该条规则被视为“命中”。

l   无关项 ('-'): 破折号表示该项输入对该规则无关,任何输入值都能满足此条目。

l   S-FEEL 支持: 决策表通常使用 S-FEEL(简单友好表现力表达式语言)来编写输入/输出条目,支持区间(如 [18..60])、比较符和列表测试。

4. 命中策略 (Hit Policy)

当多个规则可能同时匹配给定的输入组合时,命中策略决定了最终产生什么结果。它由首字母标识符表示:

单次命中策略 (Single Hit) —— 仅返回一个结果:

1.   唯一 (Unique, U): 默认策略,逻辑上规则不允许重叠,每次只能命中一条规则。

2.   任意 (Any, A): 允许重叠,但所有匹配规则的输出必须完全相同。

3.   优先级 (Priority, P): 返回输出值列表中优先级最高的结果。

4.   第一 (First, F): 按照规则在表中的定义顺序,返回第一条匹配规则的结果。

多次命中策略 (Multiple Hit) —— 返回结果列表或聚合值:

1.   集合 (Collect, C): 以任意顺序返回所有匹配项的列表。可带有聚合算子:+ (Sum), < (Min), > (Max),   (Count)。

2.   规则顺序 (Rule order, R): 按表中定义的顺序返回所有结果列表。

3.   输出顺序 (Output order, O): 按预定义的输出值优先级返回结果列表。

5. 执行语义与错误处理

l   默认输出值: 如果没有任何规则匹配,决策表可以指定一个默认值。若未指定且无匹配,则返回 null。

l   B-FEEL 的优化:在 1.6 版本引入的 B-FEEL 下,收集策略的聚合函数变得更健壮。例如,sum([]) 在标准 FEEL 中返回 null,而在 B-FEEL 中返回 0,且会自动忽略非数值项。

可交换性:决策表的逻辑可以通过 XML 或 XMI 格式在不同厂商的工具之间精准交换,确保决策模型的统一。

精选文章
公众号
关于我们
联系方式
让您的业务更自动化、智能化!
联系邮箱:   zhangyi@rongtek.com      wangyilong@rongtek.com
咨询热线:185 1521 8668        183 3562 2627
电话:010-8200081