2

我目前正在调试一个 Web 应用程序,它使用 EJB 中的 drools 规则集来处理业务规则。它部署在 JBoss 服务器内。我已经将 eclipse 配置为运行服务器,因此我可以使用 eclipse 的服务器上的调试功能。

当我到达触发 drools 规则集的类时,服务器失去焦点并在触发所有规则后返回。有没有办法可以追踪正在触发的规则?现在,我所做的是将日志放在 *.drl 文件中,这样我就知道应用程序在规则引擎中的位置。

4

3 回答 3

2

当您将名为 drools.packagebuilder.conf 的文件添加到您的 %USERHOME% 目录时,您可以获得任何规则的生成的 java 源代码。该文件必须包含以下说明:

drools.dump.dir = d:/myDroolsJavaSourceCode

目录 d:/myDroolsJavaSourceCode - 目录(或任何其他给定名称)必须存在,否则 Drools Packagebuild 将停止执行。

然后您可以将此目录作为新项目添加到您的 Eclipse 环境中(可能您必须删除标志“默认位置”以选择“myDroolJavaSourceCode”)。然后您可以在 Eclipse 中打开该文件并在编辑器中设置断点。

可能你必须在调试执行期间附加目录两次。

最好的祝福!

克里斯托夫

于 2013-04-09T08:35:02.450 回答
0

据我所知,您无法调试 drl 文件。我们所做的是将 when 和 then 的逻辑封装在一个方法中,这样你至少可以调试它。

麦迪

于 2013-04-04T12:08:09.420 回答
0

我所做的是我下载了 drools-engine 的源代码并将 drl 文件编译到它们的 java 源代码中。运行应用程序时,您可以选择在断点到达引擎时附加源。仍然很难跟踪触发的规则(可以触发来自不同 drl 的多个规则),但它比仅 sysout 日志记录要好。

于 2013-04-05T06:55:08.073 回答