Drl文件是否自动编译?如果我们更改Drl文件,服务器运行?

时间:2016-01-05 08:31:57

标签: java drools rules rule-engine business-rules

我是Drools的新手。我告诉人们,如果我们使用DRL文件,我们不需要在生产系统中重新启动服务器并自动更改代码效果,但在我的情况下不会发生... 例如:

when
$account : Account( balance > 10 )
then
System.out.println("Print");

案例1)因此,按照上面的示例,我已经启动了服务器,并且它开始给出控制台,因为我在java侧面循环(true)

Print
Print
Print
.....
.....
.....,so on 

案例2)以下是我在停止jboss服务器时所做的更改

when
$account : Account( balance > 10 )
then
System.out.println("Changed Print");

现在我期待结果为

Changed Print
Changed Print
Changed Print
.....
.....
.....,so on 

但问题仍然是我得到了cas2 1输出...为什么DRL没有自动编译,因为我已经更改并保存了文件。

我了解DRL目的者是否正确?您的帮助表示赞赏感谢

2 个答案:

答案 0 :(得分:0)

[不直接回答,但评论太长;基于对基于Excel的文件的非常有限的经验。]

没有提到你如何在服务器上部署应用程序;如果它是WAR / JAR等,那么你不应该在运行时改变它的内容,或者在服务器位置外部引用文件[通过URL可能],不清楚。

除非将服务器配置为热部署,否则在运行时更改文件不会产生任何影响。

Drools引擎生产 内存存储规则的地方&的工作 记忆来维护事实。 以前无法在运行时进行更改,以后可以更新。

当你开始改变规则时,即使成功执行规则也只是开始变得困难,如果执行则规则正常工作,类映射等是另一部分。

最终我最终调试以检查规则是如何执行的,这绝对是你不想要的。你可以尝试添加登录drl文件会有所帮助。

答案 1 :(得分:0)

Drools通常包含在JBoss堆栈中,这意味着遵循良好的设计架构,您将把它们保存在一个单独的包中。也就是说,在任何规则更新时,必须重建和重新部署此捆绑包,而不必重新启动服务器本身。

另一方面,供您参考,您还可以阅读this回答。