《Drools7.0.0.Final规则引擎教程》第4章 global全局变量
来源:互联网 发布:无心法师白琉璃知乎 编辑:程序博客网 时间:2024/06/06 02:10
global 全局变量
global用来定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。通常,可以用来为规则文件提供数据或服务。特别是用来操作规则执行结果的处理和从规则返回数据,比如执行结果的日志或值,或者与应用程序进行交互的规则的回调处理。
全局变量并不会被插入到Working Memory中,因此,除非作为常量值,否则不应该将全局变量用于规则约束的判断中。对规则引擎中的fact修改,规则引擎根据算法会动态更新决策树,重新激活某些规则的执行,而全局变量不会对规则引擎的决策树有任何影响。在约束条件中错误的使用全局变量会导致意想不到的错误。
如果多个包中声明具有相同标识符的全局变量,则必须是相同的类型,并且它们都将引用相同的全局值。
实例代码如下:
规则文件内容:
package com.rulesimport com.secbro.drools.model.Riskimport com.secbro.drools.model.Messageglobal com.secbro.drools.EmailService emailServicerule "test-global"agenda-group "test-global-group"whenthen Message message = new Message(); message.setRule(drools.getRule().getName()); message.setDesc("to send email!"); emailService.sendEmail(message);end
测试代码:
@Testpublic 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的系列教程也在筹划中,希望大家多多支持。
阅读全文
1 0
- 《Drools7.0.0.Final规则引擎教程》第4章 global全局变量
- 《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 ruleflow-group&salience
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
- 《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
- 《Drools7.0.0.Final规则引擎教程》第4章 4.3 定时器
- 《Drools7.0.0.Final规则引擎教程》第4章 4.3 日历
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
- 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
- 《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
- 《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息
- 《Drools7.0.0.Final规则引擎教程》第4章 4.9 关键字
- 《Drools7.0.0.Final规则引擎教程》第4章 Query查询之基础
- 《Drools7.0.0.Final规则引擎教程》第4章 Function函数
- springboot 构建(一)初步搭建springboot
- zookeeper集群脚本启动与停用
- Python学习 ——enumerate函数
- C++ 虚函数表解析
- IDEA 配置lombok
- 《Drools7.0.0.Final规则引擎教程》第4章 global全局变量
- [BZOJ]1089: [SCOI2003]严格n元树 DP+高精度
- 怎么用php post 数据到服务器端,封装的方法,只需要输入url 和 post 数据即可
- group by和 选择前几个的select语句
- C++黑魔法系列2: lvalue, move constructor, copy and swap
- 业余时间决定了你的人生
- 线段树的应用方法总结
- Kettle7.1 创建数据库资源库方法整理
- FZU-2193 So Hard