前页 | 后页 |
命中策略
术语“命中策略”是指在模型执行过程中,决策决策表中规则的选择方式。决策表通常包含一些规则,在表A左上角有一个框,其中包含一个字母,指示应用了哪些命中策略(以及如何选择规则)。默认情况下,决策表中的规则重叠,但如果规则确实重叠(意味着一个规则可以匹配一组给定的输入值),则需要命中策略指示符才能识别表类型并允许决策逻辑要明确理解。命中策略可以根据匹配规则的数量分为两组:
- 选择A规则(唯一、任意、优先级、第一)
- 选择了多个规则(输出顺序、规则顺序、收集)
不要太在意每一个的含义,因为我们将很快讨论它们,并提出一些基本的方法来选择一种命中策略而不是另一种 - 如果有疑问,请选择唯一 ( U ) 策略,因为它是默认策略并且是最常用。 Enterprise Architect支持所有定义的命中策略,以及我们将在下一节中学习的功能- 使用命中策略来确定决策决策表中的规则是否有差距或重叠
选择正确的命中策略对于成功规范决策模型的逻辑级别决策。与建模中的许多其他事情一样,有一些在实践中使用得更频繁的命中策略,因为它们被证明是表达特定决策的最佳方式,另一些不经常使用,而另一些则很少使用。命中策略包括字母代码、名称和描述,如下所示。
单一规则命中策略:
- U U :不可能有重叠,所有规则都是不相交的;只能匹配一条规则(这是默认设置)
- A ny ( A ):可能存在重叠,但所有匹配规则显示每个输出的输出条目相等,因此可以使用任何匹配
- 优先级( P ):可以匹配多个规则,具有不同的输出条目;该策略返回输出优先级最高的匹配规则
- 第一个( F ):可以匹配多个(重叠)规则,具有不同的输出条目;返回规则顺序的第一个命中
- O顺序( O ):按输出优先级降序返回所有命中
- 规则顺序( R ): R规则顺序返回所有命中
- 收集( C ):以任意顺序返回所有命中;可以添加一个运算符('+'、'<'、'>'、'#')来对输出应用一个简单的函数
- + (sum):决策表的结果是所有不同输出的总和
- < (min):决策表的结果是所有输出中的最小值
- > (max):决策表的结果是所有输出中的最大值
- # (count):决策表的结果是不同输出的数量
独特的
具有唯一性 ( U )命中策略A表定义了一组不重叠的规则,这意味着这些规则是互斥的,或者在正式的集合术语中是不相交的。对于给定的一组输入,一个且只有一个规则将匹配,并且将产生一组适用的输出。因此,这是一个“一击一出”的政策。它无疑是所有命中策略中最常见的,因为它广泛应用于许多逻辑上下文,每个规则都可以独立推理,并且很容易为业务和非技术利益相关者理解。
规则顺序是自由变化的,这意味着规则的顺序不会影响决策的结果。这具有额外的好处,即允许以最大化对决策逻辑的整体理解的方式对规则进行排序,并且还允许将规则作为独立实体进行开发和推理。
任何
A表和Any ( A )命中策略定义了一组可能重叠的规则,如果它们确实重叠,则输出值是相同的。因此,它是单次命中单输出策略,这样只要规则匹配所有输入值,就会返回结果,因为任何后续匹配(可能发生)都将产生相同的输出值。 Any策略,如Unique,非常常用,它的主要优点 - 以及使用它而不是Unique的原因 - 是它减少了引入条件以排除规则条件的需要,否则会导致相同的结果。因此,总是可以创建一个具有唯一命中策略的等效表,但是具有Any策略的表通常是首选,因为它更容易理解并且创建起来也不那么繁琐,因为不需要确保输入值的每个排列都匹配一个且只有一个规则。
在这个例子中,为了方便表格的表,已经定义了规则的顺序,使逻辑更加透明。请注意,前三个规则具有相同的结果,并且已被排序以使表的逻辑更加透明。
当一个表被认为有很多重复的规则和相同的结果时,考虑使用任何命中策略。这种命中策略的好处之一是它使决策表更容易理解,逻辑更透明。
优先
A表级(P) 的命中策略定义了一组重叠规则,这意味着规则可能具有不同的输出。因此,它是单次命中/单输出策略,一旦规则匹配所有输入值,就会返回结果,因为任何后续匹配(可能发生)都将产生相同的输出值。与Any 一样, Priority策略非常常用,它的主要优点和使用它而不是Any的原因是它支持存在枚举的输出值列表的情况。结果列在输出列中的顺序决定了规则顺序,选择的规则是具有最高优先级的规则。
第一的
具有第一(F)命中策略A表。定义了可能与规定重叠的规则。规则的顺序指定应该命中哪个规则这意味着对于给定的一组输入,表顺序中的第一个规则将触发其输入匹配并产生其输出。因此,它是单次命中单输出策略。它并不常用,许多支持者和经验丰富的决策建模者根本不喜欢使用它,因为它违反了最佳实践规则,即决策表中的规则顺序不应影响结果。然而,对于具有库表规则并且有一些非常重要且可能不太频繁出现的条件在逻辑上会覆盖任何更频繁出现、不太重要的输入条件的情况下,它非常有用。