有人可以帮助我如何在Drools中调试决策表。对于我们的项目,我们正在创建包含1000多个规则的决策表。每当他们在规则中犯错时,谁的电子表格将不起作用,并且该电子表格也不会显示确切的错误。
答案 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提供了两个有用的议程事件侦听器实现,用于开箱即用的调试:DebugAgendaEventListener
和DebugRuleRuntimeEventListener
。
DebugAgendaEventListener
和DebugRuleRuntimeEventListener
有两种变体。 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/