使用Drools提供错误处理和后果管理

时间:2010-05-07 08:32:18

标签: drools

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

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

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

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

如何在不依赖显着性来指导执行顺序的情况下编写这样的独家规则(这似乎是我所读过的不好的做法)?

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

2 个答案:

答案 0 :(得分:0)

我建议对特殊规则使用高显着性,并对通用规则使用较低的显着性。或者,您可以使用议程组首先运行特定规则,然后运行全能规则。

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

答案 1 :(得分:0)

看看激活组,它们允许您将一组规则放入独占组中,以便最多其中一个触发。那个,与默认规则的较低显着性的组合,semms在这里做的伎俩。