Drools 6.3.0。最终加载规则动态

时间:2015-10-23 00:58:52

标签: java maven drools

如何在运行时加载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?

1 个答案:

答案 0 :(得分:0)

Java 1.7具有java.nio.file.WatchService和几个相关类型。使用这些来使某些应用程序意识到文件系统中的更改与设置KieScanner的工作差不多,并且您不需要所有这些开销。

规划动态切换到新的规则库 - 当然不是切割和干燥的物质 - 需要仔细关注并提出几个问题。只是在正在进行的会话中添加或替换规则是不可能的。那么你创建一个新的会话,那么呢?如果运气好的话,您的会话会有所有动态事实消失的时刻,您可以安全地切换到新会话并重定向输入和输出。最后,用户必须了解新规则......

任何自动化机制都没有多大帮助,恕我直言,最好完全控制所有步骤。