前页 后页

重叠规则

为命中策略为U(表示唯一)的决策表定义的规则必须是离散的,并且不能重叠。即使对于有经验的决策建模者,这也是一件容易忽略的事情,尤其是当表变得复杂并且具有大量输入和规则时。通常在FEEL(友好足够表达语言)中使用范围表达式(使用具有不同含义的方括号(圆形和正方形))来引入重叠错误。

决策表中允许使用定义了其他匹配策略的重叠规则,例如:

  • 命中策略为A(任何)的表可以具有重叠规则,只要所有重叠规则具有相同的输出值
  • 命中策略为P(优先级)的表可以具有重叠的规则,即使输出值不同
  • 命中策略为C(收集)的表可以具有重叠的规则,即使输出值不同
如前所述,使用上一节中的插图,我们将显示一个简单的示例,该示例由使用FEEL表达式括号中的错误引起的重叠。此屏幕快照显示了两个规则相互重叠的错误,其中,该问题很难识别。引入该错误是因为Rule-#2包括使用方括号,该方括号可以有效地改写为' Sales Value> = 10,000 and Sales Value < = 50,000' 。之所以会出现问题,是因为Rule-#1还涵盖了“ 销售额 = 50,000”的情况,因此Rule-#1和Rule-#2是重叠的。

我们可以再次使用Enterprise Architect的内置验证工具来帮助我们识别任何违规情况。以与完整性规则类似的方式,验证器可以找到错误,如果表更加复杂,则将很难发现这些错误。下图显示了在“系统输出”窗口中生成的违规,标识了违反的规则和值。