2

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

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

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

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

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

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

4

2 回答 2

0

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

于 2010-05-09T00:36:40.900 回答
0

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

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

于 2010-05-07T08:35:36.777 回答