2013-04-04 53 views
2

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

当我到达触发drools规则集的类时,服务器失去焦点并在所有规则被触发后返回。有什么方法可以追踪哪些规则正在被解雇?现在,我所做的是将日志放入* .drl文件中,以便知道应用程序在规则引擎中的位置。

回答

2

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

drools.dump.dir = d:/ myDroolsJavaSourceCode

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

然后,您可以将此目录作为新项目添加到您的Eclipse环境中(可能需要删除'Default Location'标志以选择'myDroolJavaSourceCode')。 然后,您可以在Eclipse中打开文件并在编辑器中设置断点。

也许你必须在调试执行过程中连接两次目录。

此致敬礼!

克里斯托夫

+0

感谢您提供清晰的分步指南。该项目有一个构建脚本来完成drools源代码生成。我用它来生成文件。 :) – Maki 2013-04-10 03:04:37

0

据我所知你不能调试drl文件。我们所做的就是封装时间和方法的逻辑,以便至少可以调试它。

马迪

+0

谢谢你回答,你能不能给我如何做到这一点的例子吗?我花了很长时间才知道每笔交易都会触发哪些规则。 – Maki 2013-04-04 12:46:45

0

我所做的是我下载的来源Drools的发动机和DRL文件编译成自己的Java源代码。当您运行应用程序时,您可以选择在中断点到达引擎时附加源代码。仍然很难追踪被触发的规则(可以触发不同规则的多条规则),但它不仅仅是sysout日志记录。