我目前正在调试一个web应用程序,该应用程序使用EJB中的drools规则集来处理业务规则。它部署在JBoss服务器内部。我已经配置了eclipse来运行服务器,这样我就可以使用eclipse的Debug on server功能。
当我到达触发drools规则集的类时,服务器将失去焦点,并在所有规则都被触发后返回。有没有什么方法可以让我追踪正在触发的规则?现在,我要做的就是将日志放在*.drl文件中,这样我就可以知道应用程序在规则引擎中的位置。
发布于 2013-04-09 08:35:02
当您将名为drools.packagebuilder.conf的文件添加到%USERHOME%目录中时,您可以获得生成的任何规则的java源代码。文件必须包含以下指令:
drools.dump.dir = d:/myDroolsJavaSourceCode
目录d:/myDroolsJavaSourceCode - directory (或任何其他给定名称)必须存在,否则Drools Packagebuild将停止执行。
然后,您可以将此目录作为新项目添加到Eclipse Environment中(可能必须删除'Default Location‘标志才能选择'myDroolJavaSourceCode')。然后,您可以在Eclipse中打开该文件,并在编辑器中设置断点。
可能您还必须在调试执行期间附加该目录两次。
诚挚的问候!
克里斯托夫
发布于 2013-04-04 12:08:09
据我所知,你不能调试drl文件。我们所做的是将时间和时间的逻辑封装在一个方法中,以便您至少可以对其进行调试。
玛蒂
发布于 2013-04-05 06:55:08
我所做的就是下载drools-engine的源代码,并将drl文件编译成它们的java源代码。当您运行应用程序时,当断点到达引擎时,您将可以选择附加源代码。仍然很难跟踪触发的规则(可以触发来自不同drls的多个规则),但这比仅使用sysout日志记录要好。
https://stackoverflow.com/questions/15801554
复制