当前位置: 首页 > 知识库问答 >
问题:

如何调试drools决策表

宗政英才
2023-03-14

有人能帮我调试Drools中的决策表吗。对于我们的项目,我们正在创建一个包含1000多条规则的决策表。每当他们在规则中出现错误时,谁的电子表格不工作,也不显示准确的错误在哪里。

共有1个答案

翟新
2023-03-14

Drools:7.15.0版本

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

在我的例子中,我必须序列化决策表以节省时间-- 通常将它们转换为.drl文件,然后对这些文件进行计算。我跳过这一行,直接编译它们,获得知识库并序列化它们。我的应用程序使用这些序列化的知识库。

有时,即使我的决策表编译成功,它们也会出现一些运行时问题--一些规则没有按预期激发。为了调试这些代码,我发现使用AgendaEventListener很有帮助。Drools提供了两个有用的议程事件侦听器实现,用于开箱即用的调试目的:DebugAgendaEventListenerDebugrulerUntimeEventListener

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

此外,可以利用Kie事件模型获取更多信息并自定义调试。更多信息可以在drools 7.15.0中找到。

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

 类似资料:
  • 当我尝试使用Drools引擎计算保险费时,我有一个潜在的性能/内存瓶颈。 我在我的项目中使用Drools将业务逻辑与java代码分开,我决定也将其用于溢价计算。 我是不是用错了口水 如何以更高性能的方式满足要求 详情如下: 我必须为给定的合同计算保险费。 合约配置有 productCode(来自字典的代码) 合同代码(来自字典的代码) 客户的个人资料(例如年龄、地址) 保险金额(SI) 等等 目前

  • 我有一个drools决策表,其中包含条件和位置类型 我的excel如下所示 设置参数的代码如下 我按要求提供的excel文件条件对象: 需求级别==$参数位置类型==$参数 当我像上面那样设置时,我得到以下错误: 创建KieBase时出错[消息[id=1,级别=错误,路径=规则.xls,行=8,列=0文本=[错误102]行8:14不匹配的输入'=='在规则“替换规则”中],消息[id=2,级别=错

  • 场景如下: 我有一个java pojo类,具有2个变量和以及适当的getter和setter。我正在使用决策表流,我想要: 条件:当类型设置为“1”时 操作:调用name类的setName setter,并从excel中设置适当的参数 现在,我想在java中访问name的这个集值。 这就是我所做的: Name.java- MainClass.java-这有口水实现!! 决策表e:: http://

  • 在一个场景中,我们有一组主规则。其中一条规则类似于以下规则: 这些规则将向客户提供。我们希望我们的客户能够定制规则。若决定不定制,则应适用规则。自定义可以在“何时”中添加其他条件,也可以覆盖现有条件,还可以添加或修改“何时”部分。他们还可以添加到规则的“then”部分。 像这样的东西: 我们还有一些需要类似定制的决策表。 根据规则,最初建议使用“extends”,但据我所知,“extends”的作

  • 我对Drools很陌生,正在尝试编译这个简单的。xls作为决策表,并得到这个非常无用的编译错误:[错误102]第8:1行规则“Patient Notification\u 11”中的输入“then”不匹配 我已经附加了xls以及随之而来的简单对象。我已经阅读了有关此内容的所有材料,但无法弄清楚为什么我会收到以下错误。我很感谢您提前提供帮助。具体来说,我想知道是否有办法检查并查看导致此错误的幕后原因

  • 我很难找到一条我知道有效的规则。drl表单,用于在决策表中工作。 这是我的drl形式的规则: 以下是我在电子表格中尝试的内容: 当我尝试从电子表格中运行规则时,我遇到以下错误: from子句似乎有问题,但我不知道为什么。我尝试了无数次谷歌搜索,这是我唯一能找到的:http://drools-moved.46999.n3.nabble.com/Question-on-excel-decision-t