global 全局变量

global用来定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。通常,可以用来为规则文件提供数据或服务。特别是用来操作规则执行结果的处理和从规则返回数据,比如执行结果的日志或值,或者与应用程序进行交互的规则的回调处理。

全局变量并不会被插入到Working Memory中,因此,除非作为常量值,否则不应该将全局变量用于规则约束的判断中。对规则引擎中的fact修改,规则引擎根据算法会动态更新决策树,重新激活某些规则的执行,而全局变量不会对规则引擎的决策树有任何影响。在约束条件中错误的使用全局变量会导致意想不到的错误。

如果多个包中声明具有相同标识符的全局变量,则必须是相同的类型,并且它们都将引用相同的全局值。

实例代码如下:

规则文件内容:

package com.rules
import com.secbro.drools.model.Risk
import com.secbro.drools.model.Messageglobal com.secbro.drools.EmailService emailServicerule "test-global"agenda-group "test-global-group"when
thenMessage message = new Message();message.setRule(drools.getRule().getName());message.setDesc("to send email!");emailService.sendEmail(message);
end

测试代码:

@Test
public void testGlobal(){KieSession kieSession = this.getKieSession("test-global-group");int count = kieSession.fireAllRules();kieSession.dispose();System.out.println("Fire " + count  + " rule(s)!");
}

实体类:

public class Message {private String rule;private String desc;// getter/setter}

操作类:

public class EmailService {public static void sendEmail(Message message){System.out.println("Send message to email,the fired rule is '" + message.getRule()+ "', and description  is '" + message.getDesc() + "'");}
}

执行之后,打印结果:

Send message to email,the fired rule is 'test-global', and description  is 'to send email!'
Fire 1 rule(s)!

上面的实例完成了一个规则从触发到通过global调用emailService方法的实现。

具体代码后续会更新到github上:https://github.com/secbr/drools

后语

此系列课程持续更新中,QQ群:593177274(可扫描左上侧栏目二维码),欢迎大家加入讨论。点击链接关注《Drools博客专栏》 。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。

《Drools7.0.0.Final规则引擎教程》第4章 global全局变量相关推荐

  1. java drools5_《Drools7.0.0.Final规则引擎教程》Drools5的使用详解

    2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API:KnowledgeBuilder KnowledgeB ...

  2. 《Drools7.0.0.Final规则引擎教程》第1章 Drools简介

    1.1 什么是规则引擎 规则引擎是由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务 ...

  3. java 规则引擎 教程_【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 ruleflow-groupsalience...

    转载至:https://blog.csdn.net/wo541075754/article/details/75299888 ruleflow-group 在使用规则流的时候要用到ruleflow-g ...

  4. 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法

    RHS语法 使用说明 RHS是满足LHS条件之后进行后续处理部分的统称,该部分包含要执行的操作的列表信息.RHS主要用于处理结果,因此不建议在此部分再进行业务判断.如果必须要业务判断需要考虑规则设计的 ...

  5. 反洗钱检验java_从Drools规则引擎到风控反洗钱系统V0.2.3.pdf

    本文档持续更新中,QQ 技术交流群:593177274,作者邮箱:secbro2@ 从Drools 规则引擎到风控反洗钱 -- <Drools7.0.0.Final 规则引擎教程> 修订日 ...

  6. drools7规则引擎

    Drools7规则引擎教程 Drools7规则引擎教程 场景 概述 Drools5与Drools7版本变更 Drools组成部分 API划分 Drools7依赖包 Drools7 核心API 一个简单 ...

  7. jboss规则引擎KIE Drools 6.3.0 Final 教程(1)

    前言 目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5 ...

  8. jboss规则引擎KIE Drools 6.3.0 Final 教程(2)

    使用JAVA程序调用规则-运行KIE-DROOLS上的规则 第一步:建立一个MAVEN的Java工程 POM.XML 给出pom.xml文件 <project xmlns="http: ...

  9. 2.18 haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由(仅支持2.2以上版本)

    haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由 阿里云M2M设备间通信 通信流程 功能实现 1.创建产品 2.设备端开发 联云测试 3.建立topic之间 ...

最新文章

  1. Dynamics CRM 同一实体多个Form显示不同的Ribbon按钮
  2. 打包镜像并同时压缩多个镜像
  3. 洛谷 - P3379 【模板】最近公共祖先(LCA)(RMQ求LCA/Tarjan求LCA)
  4. Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
  5. 87说明书 ikbc_女性玩家的首选!——IKBC白无垢. 樱机械键盘赏评
  6. centos6.5下安装gradle编译环境
  7. 如何在Mac上创建和引导Linux USB驱动器
  8. cocos2d-x—schedule介绍
  9. eclipse maven配置_Maven系列教材 (十一)- 使用Eclipse导入一个Maven风格的SSM项目
  10. 爬虫 爬取豆瓣高分电影信息
  11. 寒江独钓学习笔记 -- 第四章 Hook分发函数 过滤键盘输入
  12. 什么是脚本语言(python脚本是什么?)
  13. 股票交易接口有什么优势?
  14. 华为出击,智能汽车大蝶变
  15. qcustomplot 峰值_QT 本程序可读取Yokogawa 光谱仪多个数据文件(CSV格式)并寻峰 - 下载 - 搜珍网...
  16. 500G技术资源分享
  17. mysql英文版数据库备份方法_mysql数据库太大了如何备份与还原
  18. 只要愿意改变,什么时候都不太晚。。。。。
  19. C++ Reference: Standard C++ Library reference: C Library: cmath: erfc
  20. ThreadPoolExecutor参数说明

热门文章

  1. 中关村十大AI研究院|盘点
  2. B-样条曲线——动机 Motivation
  3. Java面向对象笔记 • 【第10章 Swing编程初级应用】
  4. 广度/宽度优先搜索(BFS)详解
  5. taobao.item.update.listing( 一口价商品上架 )
  6. MathType 如何安装成功以及如何导入word
  7. 龙芯+银河麒麟QT环境配置+fpm打包
  8. 线索二叉树、选择树、堆
  9. 开源社 2023年度理事会成员官宣
  10. Bugku - 代码审计 | md5函数