在DMN(决策模型与表示法)中,“命中策略”(Hit Policy)规定了当决策表中的多条规则与输入数据匹配时,系统应如何产生最终结果。它确保了决策逻辑的确定性和一致性。

以下是命中策略的具体运作机制:
1.基本呈现方式
l 标识符:命中策略通常由其名称的首字母表示(如U,A,P,F,C,O,R),填写在决策表的特定单元格中(水平表位于左上角,垂直表位于左下角)。
l 默认值:如果未指定,默认命中策略为“唯一”(Unique,U)。
l 基本分类:分为单次命中(返回单条规则的结果)和多次命中(返回多条规则的结果列表或聚合值)两大类。
2.单次命中策略(Single Hit Policies)
这类策略无论有多少条规则匹配,最终只输出一个结果:
l 唯一(Unique,U):最严格的策略。在逻辑上不允许规则重叠,对于任何给定的输入组合,只能有且仅有一条规则被匹配。
l 任意(Any,A):允许多条规则重叠,但所有匹配规则的输出必须完全相同。如果匹配出的输出值不一致,则结果是未定义的。
l 优先级(Priority,P):允许多条规则匹配。系统根据预先定义的“输出值列表”中的顺序,返回输出优先级最高的那条规则。
l 第一(First,F):允许多条规则匹配。系统直接返回在决策表中位置最靠前(按规则行号排序)的第一条匹配规则的结果。
3.多次命中策略(Multiple Hit Policies)
这类策略会收集所有匹配规则的结果:
l 收集(Collect,C):以任意顺序返回所有匹配规则的输出列表。它可以带有聚合算子(Aggregation)来处理列表:
+(Sum):返回所有输出值的总和。
<(Min):返回所有输出中的最小值。
>(Max):返回所有输出中的最大值。
(Count):返回匹配规则的数量。
l 规则顺序(Rule order,R):按照规则在表中定义的先后顺序返回所有匹配结果的列表。
l 输出顺序(Output order,O):按照预定义的“输出值列表”中的优先级顺序返回所有匹配结果的列表。
4.执行运作流程
当一个决策表被调用时,命中策略按以下逻辑执行:
1.规则匹配:将输入值与表中的每一行规则进行比对(匹配过程是无序的)。
2.处理无匹配情况:如果没有规则匹配,则返回默认输出值(Default Output Value);若未定义默认值,则返回null。
3.应用策略:如果存在多个匹配项,根据所选的命中策略字母(如F或R会按规则编号排序,P或O会按值优先级排序)对结果进行筛选、排序或聚合。
4.最终输出:生成最终的单一值或值列表。
总结建议:在设计决策模型时,“唯一(U)”被认为是最规范的实践,因为它消除了歧义;而“第一(F)”和“规则顺序(R)”由于结果依赖于规则在表中的物理位置,在使用时需格外小心,以免因调整行顺序而改变业务逻辑。