【发布时间】:2020-06-24 04:42:05
【问题描述】:
如果我的决策表中有 10 行,我只想执行其中的第 6 行和第 4 行而不禁用其余行。 我们怎样才能实现这个功能? 但是,在 Action Rule 中我们可以设置优先级,但我们不能为决策表中的每一行设置优先级。 我尝试搜索决策表属性中可用的任何选项,但没有。请帮忙。
【问题讨论】:
标签: ibm-odm
如果我的决策表中有 10 行,我只想执行其中的第 6 行和第 4 行而不禁用其余行。 我们怎样才能实现这个功能? 但是,在 Action Rule 中我们可以设置优先级,但我们不能为决策表中的每一行设置优先级。 我尝试搜索决策表属性中可用的任何选项,但没有。请帮忙。
【问题讨论】:
标签: ibm-odm
您可能需要实现这样的逻辑:这就是所谓的规则链。 一个规则(行)进行修改,然后另一个规则(行)被激活,依此类推。
这需要RETE模式才能工作,请查看RETE的ODM文档,并记住在BOM设置中设置方法“SET NEXT”来更新RETE。
此示例显示了基于 NEXT 初始值具有不同选项的链接机制。
但这是最后的解决方案!
我不知道您的模型、条件等...出乎意料,您可能想要修改您的条件,因为在通常情况下不需要在 DT 中选择具有优先级的规则,即说 99.9% 的时间!
但是,如果 DT 条件列都作为分区排他性,则您可能一次匹配提供的数据的 10 行中只有一个规则(行)。则无需排序规则执行。
但情况并非总是如此,有时 DT 中的某些规则(行)可能匹配,然后可能会在同一数据上执行少数行,这是因为某些条件可能重叠。
例如:让我们考虑这个 DT 有两个条件列和两行(规则)和一个动作列。(没有语言化,只有逻辑)
在这种情况下,规则条件重叠,并且对于年龄 = 19 和日期 = 12-JUNE-2020 的数据,这两个规则(行)将匹配,并且将执行“执行此操作”和“执行该操作”。
如果您的 DT 的 10 条规则(行)在运行时与提供的数据匹配,则条件不够独占,您可能需要更改/返工 DT 条件的设计:
例如,添加新的条件列以区分规则(行)。
或者更正重叠条件
让我们以之前的样本为例,添加一个新的判别条件列:例如 GENDER
| = |之后的日期 |性别 | 动作 | | 18 , 21 | 2020 年 5 月 7 日 |中号 |这样做 | | 16 , 20 | 2020 年 5 月 12 日 | F |这样做|在这种情况下,新列将允许一次只匹配一个规则。 或者重做初始条件
| = |之后的日期 | 动作 | | 18 , 21 | 2020 年 5 月 7 日 |这样做 | | 22 , 24 | 2020 年 5 月 12 日 |这样做|现在,即使第二个条件重叠,对于年龄 = 19 和日期 = 12-JUNE-2020 的数据,只有第一个规则(行)会匹配,并且会执行“执行此操作”。
我对您想要按优先级排序的事实感到非常困惑。 优先级在某些特殊情况下可能会有所帮助(再次),但如果它在所有地方都使用它总是一个问题(例如规则中超过 5 个优先级)并且它成为维护的噩梦,因为优先级永远不会传达为什么应该应用规则在另一个之前。 相反,作为最佳实践,使用工作流将 ruletask 中的规则与顺序任务规则流进行分组,而 ruletask 名称传达分组/分离的语义。 例如初始化数据、数据校验、数据校验、数据转换等……
当您需要订购规则时,请在规则流中使用规则任务!然后,如果您需要这样做,您可以将您的 DT 拆分为 2 个决策表,以便第一个表中的某些规则可以在第二个决策表中的其他规则之前应用。
【讨论】: