【问题标题】:Drools 6.3.0.Final load rules dynamicDrools 6.3.0.Final 加载规则动态
【发布时间】:2015-10-23 00:58:52
【问题描述】:

如何在运行时加载drl 文件?我已经阅读了 Drools 文档,并且我知道应该使用 KieScanner 扫描仪规则 jar 。我有一些问题:

  1. 当我更新我的drl 文件并创建一个新的jar 时,我如何通知项目?

    使用 KieScanner 时,“ReleaseId”在项目中是硬编码的:

    KieServices kieServices = KieServices.Factory.get();
    ReleaseId releaseId = kieServices.newReleaseId("org.acme", "myartifact", "1.0-SNAPSHOT");
    KieContainer kContainer = kieServices.newKieContainer( releaseId );
    // Start the KieScanner polling the Maven repository every 10 seconds
    kScanner.start( 10000L );
    
  2. KieScanner 允许持续监控 Maven 存储库,以检查是否安装了 Kie 项目的新版本。如果我在 Linux 服务器上运行项目,是否必须安装 Maven?

【问题讨论】:

    标签: java maven drools


    【解决方案1】:

    Java 1.7 有 java.nio.file.WatchService 和几个相关的类型。使用这些让一些应用程序知道文件系统的变化与设置 KieScanner 的工作量差不多,而且您不需要所有这些开销。

    计划动态切换到新的规则库 - 当然不是一成不变的事情 - 需要仔细注意并提出几个问题。在正在进行的会话中简单地添加或替换规则是不可能的。所以你创建了一个新会话,然后呢?如果幸运的话,您的会话会出现所有动态事实都消失的时刻,您可以安全地切换到新会话并重定向输入和输出。最后,必须告知用户新规则...

    任何自动化机制都无济于事,恕我直言,无论如何最好完全控制所有步骤。

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多