Как загрузить правило Drools из БД

Я пытаюсь загрузить файл правил слюни из базы данных. Как я могу активировать это правило?

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

person nym    schedule 10.06.2015    source источник
comment
newClassPathResource в этом случае может не соответствовать вашему счету. Лучше я попробую загрузить правила с помощью newInputStreamResource или newReaderResource. P.S. Вам нужно будет предоставить немного больше информации о вашей точной проблеме.   -  person kaskelotti    schedule 15.06.2015


Ответы (1)


Предоставьте содержимое правила из БД (jdbc и т. Д.) И сохраните его в переменной. Затем использовали его (до того, как ки пускали слюни) в 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()
person Karol    schedule 10.09.2015
comment
kbuilder.add (dsl, ResourceType.DRL); он должен быть r вместо dsl? - person Neetika; 04.07.2017