我是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目的者是否正确?您的帮助表示赞赏感谢
答案 0 :(得分:0)
[不直接回答,但评论太长;基于对基于Excel的文件的非常有限的经验。]
没有提到你如何在服务器上部署应用程序;如果它是WAR / JAR等,那么你不应该在运行时改变它的内容,或者在服务器位置外部引用文件[通过URL可能],不清楚。
除非将服务器配置为热部署,否则在运行时更改文件不会产生任何影响。
Drools引擎生产 内存存储规则的地方&的工作 记忆来维护事实。 以前无法在运行时进行更改,以后可以更新。
当你开始改变规则时,即使成功执行规则也只是开始变得困难,如果执行则规则正常工作,类映射等是另一部分。
最终我最终调试以检查规则是如何执行的,这绝对是你不想要的。你可以尝试添加登录drl文件会有所帮助。
答案 1 :(得分:0)
Drools通常包含在JBoss堆栈中,这意味着遵循良好的设计架构,您将把它们保存在一个单独的包中。也就是说,在任何规则更新时,必须重建和重新部署此捆绑包,而不必重新启动服务器本身。
另一方面,供您参考,您还可以阅读this回答。