我有一个独立的java应用程序,它将与我在节点上运行的Web应用程序进行交互。我试图通过Web UI动态添加新规则。到目前为止,我无法弄明白,如何创建和添加规则。任何有关正确方向的建议都会有所帮助
答案 0 :(得分:1)
这基本上是https://stackoverflow.com/questions/25036973的副本,所以以下基本上是我对这个问题的答案的重复......
最好只看一下Drools示例源代码。例如,KieFileSystem example显示如何从String创建规则并启动包含它的会话。
要点是您创建了一个KieServices
,其中包含一个虚拟文件系统。然后,您将规则添加到该文件系统。有点像以下内容:
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kfs = ks.newKieFileSystem();
kfs.write("src/main/resources/my/rules/therule.drl", "The source code of the rule");
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll();
答案 1 :(得分:0)
you can add multiple Compiled rule DRL files like
knowledgebuilder.add(new ByteArrayResource(compiledDRL.getBytes()),ResourceType.DRL);
Get all the knowledgePackages and fire the all rules
knowledgeBase kbase = knowledgeBaseFactory.newKnowledgeBase();
kbase.addknowledgePackages(knowledgeBuilder.getKnowledgePackages());
knowledgeSession ksession = kbase.newStatefullKnowledgeSession();
ksession.insert(inputObject);
ksession.fireAllRules();
ksession.dispose();