前页 | 后页 |
决策表验证
决策表是用于表达决策逻辑的最常见,功能最强大的DMN表达式之一。但是,对决策表进行建模也可能会很复杂,特别是如果将多个输入子句组合用于许多决策表规则时,尤其如此。如本主题中所述, Enterprise Architect提供了用于验证决策表的工具。
访问
DMN表达窗口 |
模拟>决策分析> DMN> DMN表达式:“验证”按钮 |
DMN仿真窗口 |
模拟>决策分析> DMN>打开DMN模拟>配置:验证按钮 |
超出范围的检测
优良作法是为决策表的输入子句和输出子句定义“允许值”。 “允许值”列表用于执行表规则的输入和输出条目值的范围检查。
在此示例中:
- “年龄”输入子句定义[20..120]的范围;但是,规则1的输入项指定了[18..21]的范围;这超出了允许值的范围,因此规则1被报告为无效
- “婚姻状况”子句将其允许的值定义为“ S,M”的枚举;规则12指定了值“ D”,因此该规则也被报告为无效
完整性检测-报告规则中的差距
决策表的规则中的空白意味着,在输入值组合的情况下,没有规则匹配。这表明可能缺少某些逻辑或规则(除非定义了默认输出)。
当“决策”表包含许多指定数字范围的规则时,用肉眼很难发现差距,并且编写和运行详尽的测试用例将非常耗时。
例如:
验证报告规则中存在差距。仔细检查发现规则9中存在错误。输入项( 580..600]应为[ 580..600]。
唯一匹配策略的规则重叠检测
当规则重叠时,对于给定的输入值组合,将匹配多个规则。如果决策表将其命中策略指定为“唯一”,则表示违反。
当“决策”表包含许多指定数字范围的规则时,用肉眼很难发现差距,并且编写和运行详尽的测试用例将非常耗时。
例如:
验证报告规则中涉及规则4和5的重叠。仔细检查可以发现,在第三项输入“信用评分”中存在重叠,其中“ <610”与“ [600..625]”重叠。您可以通过将规则4更改为“ <600”或将规则5更改为“ [610..625]”来纠正此问题,以反映实际的业务规则。