【问题标题】:Does Drl file compile automatically? while server running if we changes the Drl file?Drl 文件会自动编译吗?如果我们更改 Drl 文件,在服务器运行时?
【发布时间】:2016-04-09 00:21:00
【问题描述】:

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

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

case 1) 所以按照上面的例子,我已经启动了服务器,并且它开始在后面给出控制台,因为我在 java 端循环了 while(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 目的者的理解正确吗?感谢您的帮助。谢谢

【问题讨论】:

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


    【解决方案1】:

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

    另一方面,供您参考,您也可以阅读this的答案。

    【讨论】:

      【解决方案2】:

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

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

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

      Drools 引擎已生产 存储规则和工作的内存 记忆来维持事实。 前者不能在运行时更改,而后者可以更新。

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

      最后,我最终调试以检查规则是如何执行的,这绝对是你不希望的。您可以尝试在 drl 文件中添加日志会有所帮助。

      【讨论】:

      • 谢谢。我说的是在运行时改变规则
      • @Prabhu 请参阅突出显示的部分并检查有关规则编译等的文档。您是否尝试过将应用程序重新部署到 chekc 是否正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2015-07-10
      相关资源
      最近更新 更多