我目前正在调试一个Web应用程序,该应用程序在EJB中使用drools规则集来处理业务规则。它部署在JBoss服务器中。我已经配置了eclipse来运行服务器,所以我可以使用eclipse的Debug on Server功能。
当我到达触发drools规则集的类时,服务器失去焦点并在触发所有规则后返回。有没有办法可以追踪被解雇的规则?现在,我所做的是将日志放在* .drl文件中,以便知道应用程序在规则引擎中的位置。
答案 0 :(得分:2)
当您将名为drools.packagebuilder.conf的文件添加到%USERHOME%目录时,您可以获取任何规则的生成的java源代码。 该文件必须包含以下指令:
drools.dump.dir = d:/ myDroolsJavaSourceCode
目录d:/ myDroolsJavaSourceCode - 目录(或任何其他给定名称)必须存在,否则Drools Packagebuild将停止执行。
然后,您可以将此目录作为新项目添加到Eclipse环境中(可能您必须删除标记'Default Location'以选择'myDroolJavaSourceCode')。 然后,您可以在Eclipse中打开文件并在编辑器中设置断点。
也许你必须在调试执行期间两次附加目录。
祝你好运!
克里斯托夫
答案 1 :(得分:0)
据我所知你无法调试drl文件。我们所做的是封装when的逻辑然后在一个方法中,这样你至少可以调试它。
麦迪
答案 2 :(得分:0)
我做的是下载了drools-engine的源代码,并将drl文件编译成了他们的java源代码。运行应用程序时,您可以选择在断点到达引擎时附加源。仍然很难追踪被触发的规则(可以触发来自不同drls的多个规则),但它比仅仅sysout日志更好。