【问题标题】:Using Drools to provide error processing and consequence management使用 Drools 提供错误处理和后果管理
【发布时间】:2010-05-09 08:36:40
【问题描述】:

我正在开发一个模块,其目的是处理 Java 异常并决定处理它们的策略。异常可能是我知道的事情(明确的业务异常,例如 TransformationException)或更一般的环境问题(JMS 错误、IO 错误等)

插入知识库的事实都是同一个类,并且包装(包含)一个Exception。

我想编写一个规则,明确匹配我知道如何处理的异常(例如 TransformationException),并有另一个规则来捕获“其他所有内容”

在我看来,问题在于对于包含 TransformationException 的事实,两个规则都会触发并且输出将不确定。

在不依赖显着性来控制执行顺序的情况下,我将如何编写此类排他性规则(从我所读到的内容来看,这似乎是一种不好的做法)?

我有一个我不满意的解决方案,其结果取决于在我的 .drl 中定义规则的顺序。

【问题讨论】:

    标签: drools


    【解决方案1】:

    我建议对例外特定规则使用高显着性,而对通用规则使用较低显着性。或者,您可以使用议程组先运行特定规则,然后再运行包罗万象的规则。

    为了防止多次执行,您可以在更高显着性规则的操作中撤回事实。

    【讨论】:

      【解决方案2】:

      看看激活组,它们允许您将一组规则放入一个独占组中,以便最多触发其中一个。这与您的默认规则的较低显着性相结合,似乎可以在这里解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-12
        相关资源
        最近更新 更多