计算机系统应用教程网站

网站首页 > 技术文章 正文

开启灵活开发编码模式:规则引擎drools——高级语法global

btikc 2024-11-16 17:21:06 技术文章 2 ℃ 0 评论

继续drools的学习,本节主要说说高级语法中常用的全局变量global。

高级语法global全局变量

  • ① 介绍

global关键字用于在规则文件中定义全局变量,它可以让应用程序的对象在规则文件中能够被访问。可以用来为规则文件提供数据或服务。

  • ② 语法结构

global 对象类型 对象名称

  • ③ 注意点
  1. 如果对象类型为包装类型是【java.until.* 这些都属于包装类】,在一个规则中改变了global的值,那么只针对当前规则有效,对其他规则中的global不会有影响。可以理解为它是当前规则代码中的global副本,规则内部修改不会影响全局的使用。
  2. 如果对象类型为集合类型或JavaBean时,在一个规则中改变了global的值,对java代码和所有规则都有效。
  • ④ 创建一个drl文件演示,验证包装类的全局变量

定义2个规则,方便看出效果,修改全局的变量,看看下个规则值是不是改变了。count的初始值由java来进行创建。写这个例子就是为了判断在第一个规则里面改变了count的值,在第二个规则里面看count是不是发生了改变。

第一个规则执行后count是15,第二个规则执行后count是5,

第三个定义一个集合的drl,并设置初始值,第四个规则集合里面的数量是否有变化

单元测试的结果,已经添加完毕了,在第四个规则里面还存在数量的变化。一旦对这个变量发生改变,任何其他地方都会受到影响。

定义个javabean的方式。看是否发生改变。

  • ⑤ 指定drl中的那个规则执行

目前drl太多了,控制台打印的东西太乱了,不好控制。

// 指定某种规则开头的规则名称

    kieSession.fireAllRules(new RuleNameStartsWithAgendaFilter("rule_global"));

PS:排除干扰只执行需要看结果的字段。今天全部变量的使用讲解完了,下次咱们说说查询Query。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表