前页 | 后页 |
规则间隙
决策规则必须在实施到生产系统或服务之前完成。这是必要的,因为它们必须完成覆盖所有可能的输入。有一个可以为表定义的默认输出条目形式的包罗万象的条件,但许多有经验的建模者更喜欢确保所有输入都被逻辑覆盖。对于经验不足的建模者来说,排除在输入域或 Universe 的时间范围内上下文的输入规则也是很常见的。更有经验A建模者会知道,即使当前的经验结果表明并非如此,任何事情都是可能的,因此将确保规则涵盖这些外围输入。可以执行Enterprise Architect的决策表验证来查找规则覆盖范围中的任何差距。这是一个非常有用的功能,因为决策逻辑中的错误可能会导致规则实施中出现不希望的结果,甚至在某些情况下会导致灾难性影响 该图显示了具有两个输入数据的单个决策的简单决策模型元素;它的创建是为了举例说明可以使用验证的方式。
第二个屏幕截图显示了部分完成的决策表,其中仅在行中定义了Gold客户。建模者无意中创建了包含间隙的规则。这是一个简单的演示,读者应该很容易找到差距,但在更复杂的库表中,有更多的规则和输入,定位问题可能非常具有挑战性。
我们能够使用Enterprise Architect的内置验证功能来查找规则逻辑中的任何错误。在这种情况下,建模者已经疏忽了,并且没有涵盖每个有效的输入值。没有为销售价值为“(40,000 - 50,000]”的“黄金”级客户定义规则。
当验证运行时, Enterprise Architect将打开输出窗口并显示验证错误,表明在这种情况下存在“完整性违规”以及表的哪些行受到影响。如前所述,这个例子是刻意去展示特征的,通过扫描表规则很容易识别错误,但是对于更复杂的库表错误可能很难定位。
在此示例中,已为顾客等级输入了允许值,即“金、银、铜”。在定义规则时,决策分析师忘记包含“青铜”输入值的规则。
当验证运行时,错误将报告为间隙,因为为顾客级别定义的枚举值之一根本没有覆盖。
可以通过添加另一条规则来纠正该错误,该规则涵盖了顾客级别为Bronze的情况。然后,这将确保规则在语法和逻辑上是正确的,并且在验证运行时不会出现错误并且不会生成警告。
生成到输出窗口的验证将是: