如何从DB加载Drools规则

时间:2015-06-10 13:39:41

标签: drools rule-engine

我正在尝试从数据库加载流氓规则文件。 我该如何解除这条规则?

kbuilder.add(
    ResourceFactory.newClassPathResource("myrule.drl"),
    ResourceType.DRL
);

1 个答案:

答案 0 :(得分:1)

从DB(jdbc等)提供规则内容并将其存储在变量中。然后我们(在kie drools之前)在kbuilder中。

String ruleContent; // fill this from DB in diffrent method/aspect

KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Resource r = ResourceFactory.newReaderResource((Reader) new StringReader(ruleContent));
kbuilder.add(dsl, ResourceType.DRL);
if (kbuilder.hasErrors()) {
    log.error(kbuilder.getErrors().toString());
}
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// prepare fact object

ksession.insert(factObject);
ksession().fireAllRules()