我正在尝试从数据库加载流氓规则文件。 我该如何解除这条规则?
kbuilder.add(
ResourceFactory.newClassPathResource("myrule.drl"),
ResourceType.DRL
);
答案 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()