关于java:drools执行String规则或执行某个规则文件

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

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年50元

阿里云限时活动-2核2G-5M带宽-60G SSD-1000G月流量 ,特惠价99元/年(原价1234.2元/年,可以直接买3年),速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据