《Drools7.0.0.Final规则引擎教程》第4章 global全局变量详解编程语言
2023-06-13 09:20:44 时间
global 全局变量
global用来定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。通常,可以用来为规则文件提供数据或服务。特别是用来操作规则执行结果的处理和从规则返回数据,比如执行结果的日志或值,或者与应用程序进行交互的规则的回调处理。
全局变量并不会被插入到Working Memory中,因此,除非作为常量值,否则不应该将全局变量用于规则约束的判断中。对规则引擎中的fact修改,规则引擎根据算法会动态更新决策树,重新激活某些规则的执行,而全局变量不会对规则引擎的决策树有任何影响。在约束条件中错误的使用全局变量会导致意想不到的错误。
如果多个包中声明具有相同标识符的全局变量,则必须是相同的类型,并且它们都将引用相同的全局值。
实例代码如下:
规则文件内容:
package com.rules import com.secbro.drools.model.Risk import com.secbro.drools.model.Message global com.secbro.drools.EmailService emailService rule test-global agenda-group test-global-group when then Message 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
15190.html
cjavaxml相关文章
- 记一次哈啰物联网平台规则引擎kafka消息积压线上事故复盘
- java实现简单的字符串解析匹配运算规则引擎
- 【数据挖掘】关联规则挖掘 Apriori 算法 ( 置信度 | 置信度示例 )
- Drools 规则引擎—-向领域驱动进步(六)详解编程语言
- Drools 规则引擎—-向领域驱动进步(四)详解编程语言
- 《Drools7.0.0.Final规则引擎教程》FactHandler使用案例详解编程语言
- 《Drools7.0.0.Final规则引擎教程》LHS简介&Pattern详解编程语言
- 《Drools7.0.0.Final规则引擎教程》activation-group& dialect& date-effective详解编程语言
- 《Drools7.0.0.Final规则引擎教程》lock-on-active详解编程语言
- 《Drools7.0.0.Final规则引擎教程》Drools简介详解编程语言
- 【Oracle规则引擎:实现业务流程自动化】(oracle规则引擎)
- MySQL规则引擎:助力数据灵活管理(mysql规则引擎)
- Hibernate Criteria接口 addOrder方法:设置结果集的排序规则
- Redis实现多维度混合规则排序(混合规则排序redis)
- Oracle中有效的列名规则总结(oracle中有效的列名)
- JavaScript函数调用规则