Java Drools 6.3.0.最终负载规则动态
如何在运行时加载Java Drools 6.3.0.最终负载规则动态,java,maven,drools,Java,Maven,Drools,如何在运行时加载drl文件?我已经阅读了Drools文档,我知道应该使用规则jar。我有一些问题: 当我更新我的drl文件并创建一个新的jar时,我如何通知项目 使用扫描仪时,“ReleaseId”在项目中硬编码: KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId("org.acme", "myartifact", "1.0-SNAPSHOT");
drl
文件?我已经阅读了Drools文档,我知道应该使用规则jar
。我有一些问题:
drl
文件并创建一个新的jar
时,我如何通知项目
使用扫描仪时,“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 );
Java1.7有Java.nio.file.WatchService和几个相关类型。使用这些工具使某些应用程序了解文件系统中的更改,所需的工作量与设置KieScanner所需的工作量差不多,并且您不需要所有这些开销 计划动态切换到新的规则库——当然不是一成不变的事情——需要仔细考虑,并提出几个问题。在正在进行的会话中简单地添加或替换规则是不可能的。那么您创建了一个新会话,然后呢?如果幸运的话,您的会话会有所有动态事实消失的时刻,您可以安全地切换到新会话并重定向输入和输出。最后,用户必须了解新规则 任何自动机制都不会有多大帮助,而且无论如何,最好是完全控制所有步骤