【发布时间】:2023-03-31 14:25:01
【问题描述】:
有人可以帮助我如何在 Drools 中调试决策表。对于我们的项目,我们正在创建一个包含 1000 多个规则的决策表。每当他们在规则中出现错误时,谁的电子表格不起作用,而且它也没有显示确切的错误在哪里。
【问题讨论】:
标签: drools
有人可以帮助我如何在 Drools 中调试决策表。对于我们的项目,我们正在创建一个包含 1000 多个规则的决策表。每当他们在规则中出现错误时,谁的电子表格不起作用,而且它也没有显示确切的错误在哪里。
【问题讨论】:
标签: drools
Drools:版本 7.15.0.Final
我目前采用两种方法来调试决策表:
就我而言,我必须对决策表进行序列化以节省时间——通常它们会转换为 .drl 文件,然后进行评估。我跳过这一行,直接编译它们,获取知识库并序列化它们。我的应用程序使用这些序列化的知识库。
有时我的决策表无法编译。
我通过生成.drl 文件来调试它们。 drl parser 生成的错误大多可以从生成的.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/
【讨论】: