dmn标准-决策表(Decision Table 命中政策(Hit policy)

      命中政策(Hit policy)

      决策表( decision table)通常具有多个规则。默认情况下,规则不重叠。如果规则重叠,则意味着一个以上的规则可能与给定的一组输入值匹配,因此需要命中策略指示符才能识别表类型并明确理解决策逻辑。命中策略(hit policy)可用于在设计时检查正确性。

命中策略指定在规则重叠的情况下(即,当多个规则与输入数据匹配时)决策表的结果。为了清楚起见,点击策略是在特定决策表单元格中使用单个字符进行汇总的。在水平表中,这是左上方的单元格(图2),在垂直表中,这是左下方的单元格(图1)。字符是定义的匹配策略的首字母(唯一,任意,优先,第一,收集,输出顺序或规则顺序/Unique, Any, Priority, First, Collect, Output order or Rule order)。交叉表表始终是唯一的,不需要指示符。

命中策略应默认为唯一,在这种情况下,命中指示器是可选的。具有唯一匹配策略的决策表不得包含重叠规则。

工具可能仅支持命中策略的非空子集,但表类型应清楚,因此,命中策略指示是必需的,默认唯一表除外。始终要支持唯一表。

单个和多个命中表

单个命中表应仅返回一个规则的输出;多个匹配表可以返回多个规则的输出(或输出的函数,例如,值的总和)。如果允许规则重叠,则匹配策略会指示必须如何解释重叠的规则。

命中策略的首字母还可以标识表是单命中还是多命中。

单个匹配表可能包含也可能不包含重叠规则,但仅返回一个规则的输出。如果规则重叠,则匹配策略会指出要选择哪个匹配规则。一些限制适用于具有复合输出的表。

无论使用单个还是多个匹配策略,决策表中的某些列都可以指定为规则注释。规则注释( rule annotations)包含不作为表达式结果的一部分返回的文本,出于下文所述的命中策略验证的目的,它们将被忽略。尽管没有标准的机制可以在执行时访问决策表中的匹配规则的注释,但是实现可以将注释用于审核,调试,日志记录,文档,分析,下游系统使用或其他目的。

单个输出决策表的单个命中策略是:

1、唯一性(Unique):不可能重叠,所有规则都是不相交的。只能匹配一个规则。这是默认值。

2、Any:可能有重叠,但是所有匹配的规则对每个输出都显示相等的输出条目(忽略规则注释),因此可以使用任何匹配项。如果输出条目不相等(忽略规则注释),则命中策略不正确,结果不确定。

3、优先级(Priority):多个规则可以匹配,输出条目不同。该策略返回具有最高输出优先级的匹配规则。输出优先级在输出值的有序列表中以优先级从高到低的顺序指定。请注意,优先级与规则顺序无关。

4、第一命中(First):多个(重叠)规则可以匹配,但具有不同的输出条目。返回按规则顺序的第一个匹配项(评估可能会停止)。这仍然是一种常见用法,因为它通过强制第一个匹配来解决不一致问题。但是,初次命中表不被认为是好的做法,因为它们没有提供对决策逻辑的清晰概述。将这种类型的表与其他表区分开是很重要的,因为其含义取决于规则的顺序。最后一条规则通常是追赶。由于此顺序,该表很难手动验证,因此必须谨慎使用。

多个匹配表可能会从多个规则返回输出条目。 结果将是规则输出的列表或输出的简单功能。

单个输出决策表的多个匹配策略可以是:

5、输出顺序(Output order):以输出优先级递减的顺序返回所有命中。 输出优先级在输出值的有序列表中按优先级从高到低的顺序指定。

6、规则顺序(Rule order):按规则顺序返回所有匹配。 注意:含义可能取决于规则的顺序。

7、收集(Collect):以任意顺序返回所有匹配。 可以添加一个运算符(“ +”,“ <”,“>”,“#”)以将简单功能应用于输出。 如果不存在运算符,则结果为所有输出条目的列表。

收集运算符是:

a)+(总和):决策表的结果是所有输出的总和。

b)<(最小值):决策表的结果是所有输出中的最小值。

c)>(max):决策表的结果是所有输出中的最大值。

d)#(计数):决策表的结果是输出数量。

其他策略,例如对输出的更复杂的操作,可以通过对输出列表(决策表外部)进行后处理来执行。

具有复合输出的决策表仅支持以下命中策略:唯一,任意,优先级,第一命中,输出顺序,规则顺序和不带运算符的收集,因为在多个输出上未定义收集运算符。此限制将忽略规则注释,无论指定的匹配策略如何,规则注释都可能存在多个。

对于“优先级”和“输出顺序”命中策略,在复合输出表中确定优先级高于已为其提供输出值的所有输出(忽略规则注释)。在输出值的有序列表中按优先级从高到低的顺序指定了每个输出的优先级,并通过考虑水平表中从左到右的有序输出(即,左列优先于右侧),或在垂直表格中从上至下。尽管没有提供输出值的输出也包含在订购的复合输出中,但订购时并未考虑这些输出。

因此,例如,如果使用“年龄= 17”,“风险类别=“高”和“债务审查” = true进行调用,则图19中的“路由规则”表将返回所有四个规则的输出,顺序为2、4、3、1 。

说明:

交叉表表是唯一的并且根据定义完整,因此不需要命中策略(hit policy)。

决策表中规则的顺序不会影响含义,除了“头”表(单点击)和“规则顺序”表(多次点击)中。 这些表应谨慎使用。

 技术支持:盘古BPM工作流平台

相关教程