共计 1153 个字符,预计需要花费 3 分钟才能阅读完成。
1、背景
此处次要记录一下 2 个小的知识点,避免当前遗记。
1、如何在 drools
中执行某个 drl
文件。
2、如果咱们的规定是一个 String
类型的字符串,那么该如何执行。
2、实现
2.1 执行指定的 drl 文件
KieHelper kieHelper = new KieHelper(); | |
// 获取指定的 drl 文件 | |
Resource resource = ResourceFactory.newClassPathResource("rules/alway-rule.drl", "UTF-8"); | |
kieHelper.addResource(resource,ResourceType.DRL); | |
KieBase kieBase = kieHelper.build(); | |
KieSession kieSession = kieBase.newKieSession(); | |
kieSession.fireAllRules(); | |
kieSession.dispose(); |
2.2 执行 String 规定
String drl = "package rules\n" + | |
"\n" + | |
"rule \"rule-01\"\n" + | |
"when\n" + | |
"$i: Integer()\n" + | |
"then \n" + | |
"System.out.println(\" 规定:[\"+drools.getRule().getName()+\"]执行, 规定内存中存在的值是:\"+$i);\n" + | |
"end"; | |
KieHelper kieHelper = new KieHelper(); | |
kieHelper.addContent(drl, ResourceType.DRL); | |
// 创立 KieBase 是一个老本很大的 | |
KieBase kieBase = kieHelper.build(EqualityBehaviorOption.IDENTITY); | |
System.out.println(kieBase); | |
// 创立 KieSession 老本小 | |
KieSession kieSession = 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
正文完