美文网首页
drools执行String规则或执行某个规则文件

drools执行String规则或执行某个规则文件

作者: huan1993 | 来源:发表于2022-05-29 22:21 被阅读0次

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

相关文章

  • drools执行String规则或执行某个规则文件

    1、背景 此处主要记录一下2个小的知识点,防止以后忘记。 1、如何在drools中执行某个drl文件。2、如果我们...

  • drools执行完某个规则后终止别的规则执行

    1、背景 在我们开发的过程中,可能一个场景需要写多个规则,但是某些规则和别的规则又是互斥的关系。即某个规则成立时,...

  • 入门Demo

    drools有专门的规则语法drl,就是专门描述活动的规则是如何执行的: Point-rules.drl 文件内容...

  • Drools规则文件——常用的语法属性

    Drools规则文件——语法属性 salience 功能:设置规制执行的优先级值:数字(数字越大执行优先级越高)...

  • drools执行指定的规则

    1、背景 在我们编写drools规则文件的过程中,可能会编写好多规则。drools引擎在模式匹配的时候,可能一下子...

  • Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规...

  • 规则引擎 Drools 执行流程浅析

    什么是规则引擎 规则引擎是处理复杂规则集合的引擎。通过输入一些基础事件,以推演或者归纳等方式,得到最终的执行结果。...

  • Drools

    一. Drools规则引擎 Drools就是为了解决业务代码和业务规则分离的引擎。Drools 规则是在 Java...

  • DROOLS RULE基础知识学习整理

    对于Drools Rule的理解 一个规则可以包含三个部分: 属性部分:定义当前规则执行的一些属性等,比如是否可被...

  • drools中no-loop和lock-on-active的区别

    一、背景 在我们编写drools规则的过程中,可能会发生死循环,那么该怎么解决呢?如果想某一个规则只执行一次,即别...

网友评论

      本文标题:drools执行String规则或执行某个规则文件

      本文链接:https://www.haomeiwen.com/subject/mqwuprtx.html