【问题标题】:Validate DMN rule not overlap while adding new rule to DMN table在向 DMN 表添加新规则时验证 DMN 规则不重叠
【发布时间】:2016-02-08 07:51:37
【问题描述】:

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

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

例如以下是我的 DMN 表,


| x |是 | o/p |

| 50 | "ABC" |

| 100 | "XYZ" |

考虑到用户是如此愚蠢 :D ,并且可以创建像上面这样的规则。

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

如果我使用 UNIQUE 命中策略,它不会在添加新规则时显示错误,而是在评估 DMN 表时显示。我不希望这样:(

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

【问题讨论】:

    标签: java angularjs camunda


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答:)。只是一个问题,是否有 java 函数,例如考虑有问题的 dmn 表,它返回 x = 10 的所有规则(比如 x 输入将没有任何表达式。它只有数字)
    • 不,也许你可以使用DMN model API 来实现这样的功能。它是一个围绕 DMN XML 结构的包装,允许您访问不同的元素,例如参见tests
    • Danke :) 链接很有帮助。
    【解决方案2】:

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

    干杯 伯恩德

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 1970-01-01
        相关资源
        最近更新 更多