如何调试Drools决策表

时间:2018-09-10 18:15:14

标签: drools

有人可以帮助我如何在Drools中调试决策表。对于我们的项目,我们正在创建包含1000多个规则的决策表。每当他们在规则中犯错时,谁的电子表格将不起作用,并且该电子表格也不会显示确切的错误。

1 个答案:

答案 0 :(得分:0)

Drools:版本7.15.0.Final

我目前采用两种方法调试决策表:

编译阶段

在我的情况下,我必须序列化决策表以节省时间–通常情况下,它们会转换为.drl文件,然后对其进行评估。我跳过这一行,直接对其进行编译,以获得知识库并对其进行序列化。我的应用程序使用这些序列化的知识库。

有时候我的决策表无法编译。

我通过生成.drl文件来调试它们。 drl解析器生成的错误大部分可以从生成的.drl文件中识别出来。

Code snippet for converting a drools decision table into its corresponding drl file

运行阶段

有时,即使我的决策表已成功编译,它们也存在一些运行时问题–某些规则未按预期触发。为了调试这些,我发现使用AgendaEventListener很有帮助。 Drools提供了两个有用的议程事件侦听器实现,用于开箱即用的调试:DebugAgendaEventListenerDebugRuleRuntimeEventListener

DebugAgendaEventListenerDebugRuleRuntimeEventListener有两种变体。 org.drools.core.event包中的事件使用Logger实例记录事件,而org.kie.api.event.rule包中的事件使用stderr。但是,两者具有完全相同的功能。

此外,可以利用Kie事件模型获取更多信息并进行自定义调试。可以找到更多信息in the drools 7.15.0.Final docs

其他链接和参考: https://javadude.wordpress.com/2012/03/06/debugging-drools-rules/