在向 DMN 添加新规则时验证 DMN 规则不重叠 table

Validate DMN rule not overlap while adding new rule to DMN table

我在我的应用程序中使用 camunda DMN(在 angular、java、spring)。

我想在向 DMN 添加新规则时验证规则是否不重叠 table。

例如以下是我的 DMN table,


| × |是 | o/p |

| <9 | >50 | "ABC" |

| <20 | >100 | "XYZ" |

考虑到用户很笨:D,可以像上面那样创建规则。

现在如果 i/p 以上 DMN 是 x = 10 和 y = 99 那么它满足这两个规则。

如果我使用 UNIQUE 命中策略,它不会在添加新规则时显示错误,而是在评估 DMN table 时显示错误。我不想要那个:(

如何在使用 camunda dmn js api 或 camunda dmn java api 创建规则时避免规则重叠?

这目前是不可能的,因为它需要了解所有可能的输入组合。此外,推断所有规则的重叠值范围可能非常困难。

正如塞巴斯蒂安指出的那样,没有内置功能可以实现这一点。但是,我们在一个项目中讨论过,您可以创建一个参数化的 JUnit 测试用例,并 运行 它自己使用输入可能性的所有排列。如果您使用没有唯一结果的输入调用决策 table,您将得到一个异常。

干杯 伯恩德

看看 https://arxiv.org/pdf/1603.07466v1.pdf,这可能会有所帮助。文档中有一个 link 到一个带有 dmn-js 的 github 项目,其中添加了规则验证,还有一个在线版本,您可以在其中查看它是如何工作的。