如何在运行时加载drl
文件?我已经阅读了Drools文档,我知道应该使用KieScanner扫描程序jar
。我有一些问题:
当我更新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 );
答案 0 :(得分:0)
Java 1.7具有java.nio.file.WatchService和几个相关类型。使用这些来使某些应用程序意识到文件系统中的更改与设置KieScanner的工作差不多,并且您不需要所有这些开销。
规划动态切换到新的规则库 - 当然不是切割和干燥的物质 - 需要仔细关注并提出几个问题。只是在正在进行的会话中添加或替换规则是不可能的。那么你创建一个新的会话,那么呢?如果运气好的话,您的会话会有所有动态事实消失的时刻,您可以安全地切换到新会话并重定向输入和输出。最后,用户必须了解新规则......
任何自动化机制都没有多大帮助,恕我直言,最好完全控制所有步骤。