首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Drools 6.0在运行时动态加载规则

Drools 6.0在运行时动态加载规则
EN

Stack Overflow用户
提问于 2014-05-08 21:05:12
回答 3查看 12.8K关注 0票数 3

我想在运行时加载一个drl文件。我发现包括这个one的帖子可以在5.0版本上工作,但是我不知道如何在drools 6.0版本上做到这一点。

EN

回答 3

Stack Overflow用户

发布于 2014-05-09 18:37:55

在Drools 6中,您的规则包被部署到Maven。提供了一个KieScanner,您可以将其附加到您的KieContainer。这将以定义的间隔轮询您的存储库,以查看包是否已更新,如果是,则下载最新的包。

Drools文档中提供了有关如何定义KieScanner (包括代码示例)的完整说明:

https://docs.jboss.org/drools/release/latest/drools-docs/html/ch04.html

票数 3
EN

Stack Overflow用户

发布于 2015-06-04 21:13:06

我使用了这两个文档中的信息:

我已经提出了这段代码,它将/drl/file/path文件中定义的规则加载到您在最后一行获得的有状态会话中。

代码语言:javascript
运行
复制
    File path = new File("/drl/file/path");
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newFileResource(path), ResourceType.DRL);
    if (kbuilder.hasErrors()) {
        throw new RuntimeException("Errors: " + kbuilder.getErrors());
    }
    kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
    StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

有些方法已被弃用,因此,不要期望此解决方案在后续版本中有效。

请仔细检查导入,它们都来自org.kie,而不是来自drools包。我承认这些导入太多了,但是我粘贴了我正在尝试开发的示例中的代码,所以我的代码中有更多的东西,很抱歉。

导入java.io.File;

代码语言:javascript
运行
复制
import org.kie.api.KieServices;
import org.kie.api.builder.KieBuilder;
import org.kie.api.builder.KieFileSystem;
import org.kie.api.builder.KieScanner;
import org.kie.api.builder.ReleaseId;
import org.kie.api.builder.model.KieBaseModel;
import org.kie.api.builder.model.KieModuleModel;
import org.kie.api.builder.model.KieSessionModel;
import org.kie.api.conf.EqualityBehaviorOption;
import org.kie.api.conf.EventProcessingOption;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.conf.ClockTypeOption;
import org.kie.internal.KnowledgeBase;
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.StatefulKnowledgeSession;

希望能有所帮助。

票数 -1
EN

Stack Overflow用户

发布于 2015-08-11 02:45:19

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23542610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档