1。背景这里主要记录2个小知识点,防止以后忘记。1.如何在drools中执行drl文件。2、如果我们的规则是String类型的字符串,如何执行。2.实现2.1执行指定的drl文件KieHelperkieHelper=newKieHelper();//获取指定的drl文件Resourceresource=ResourceFactory.newClassPathResource("rules/alway-rule.drl","UTF-8");kieHelper.addResource(resource,ResourceType.DRL);KieBasekieBase=kieHelper.build();KieSessionkieSession=kieBase.newKieSession();kieSession.fireAllRules();kieSession.dispose();2.2执行字符串规则Stringdrl="packagerules\n"+"\n"+"rule\"rule-01\"\n"+"when\n"+"$i:Integer()\n"+"then\n"+"System.out.println(\"Rule:[\"+drools.getRule().getName()+\"]被执行,规则内存中的值为:\"+$i);\n"+"end";KieHelperkieHelper=newKieHelper();kieHelper.addContent(drl,ResourceType.DRL);//创建KieBase是一个代价高昂的KieBasekieBase=kieHelper.build(EqualityBehaviorOption.IDENTITY);System.out.println(kieBase);//使用低成本的KieSession创建KieSessionkieSession=kieBase.newKieSession();kieSession.insert(123);kieSession.fireAllRules();kieBase.removeRule("rules","rule-01");kieSession.insert(456);kieSession.fireAllRules();kieSession.dispose();需要注意的是KieBase的创建成本非常高,所以如果真的要使用必要的缓存是3.完整代码https://gitee.com/huan1993/spring-cloud-parent/tree/master/drools/drools-load-rule-from-string-or-file
