《Drools7.0.0.Final规则引擎教程》auto-focus详解编程语言
2023-06-13 09:20:44 时间
auto-focus
在agenda-group章节,我们知道想要让AgendaGroup下的规则被执行,需要在代码中显式的设置group获得焦点。而此属性可配合agenda-group使用,代替代码中的显式调用。默认值为false,即不会自动获取焦点。设置为true,则可自动获取焦点。
对于规则的执行的控制,还可以使用org.kie.api.runtime.rule. AgendaFilter来实现。用户可以实现该接口的accept方法,通过规则当中的属性值来控制是否执行规则。
方法体如下:
boolean accept(Match match);
在该方法当中提供了一个Match参数,通过该参数可以获得当前正在执行的规则对象和属性。该方法要返回一个布尔值,返回true就执行规则,否则不执行。
auto-focus使用示例代码规则代码:
package com.rules rule test agenda-group agenda-group abc auto-focus true when then System.out.println( 规则test agenda-group 被触发 end
执行规则代码:
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer(); KieSession kSession = kieContainer.newKieSession( ksession-rule kSession.fireAllRules(); kSession.dispose();
执行结果:
规则test agenda-group 被触发
这里,我们没有在代码中显式的让test agenda-group获取焦点,但规则同样被执行了,说明属性配置已生效。
AgendaFilter代码实例规则文件代码:
package com.rules rule test-agenda-group when then System.out.println( 规则test-agenda-group 被触发 end rule other when then System.out.println( 规则other被触发 end
实现的MyAgendaFilter代码:
package com.secbro.drools.filter; import org.kie.api.runtime.rule.AgendaFilter; import org.kie.api.runtime.rule.Match; /** * Created by zhuzs on 2017/7/19. */ public class MyAgendaFilter implements AgendaFilter{ private String ruleName; public MyAgendaFilter(String ruleName) { this.ruleName = ruleName; } @Override public boolean accept(Match match) { return match.getRule().getName().equals(ruleName) ? true : false; } // 省略getter/setter方法 }
测试方法:
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer(); KieSession kSession = kieContainer.newKieSession( ksession-rule AgendaFilter filter = new MyAgendaFilter( test-agenda-group kSession.fireAllRules(filter); kSession.dispose();
执行结果:
规则test-agenda-group 被触发
在执行规则的Filter中传入的规则名称为test-agenda-group,此规则被执行。而对照组的规则other,却未被执行。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/15203.html
cjavaxml相关文章
- 2022-10-13:给定一个只包含三种字符的字符串:( 、) 和 *, 写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 (
- IBM告警规则引擎语法说明
- C# RulesEngine 规则引擎:从入门到看懵
- 腾讯云边缘安全加速(EdgeOne)之规则引擎
- Drools 规则引擎—-向领域驱动进步(七)详解编程语言
- Drools 规则引擎—-向领域驱动进步(六)详解编程语言
- Drools 规则引擎—-向领域驱动进步(四)详解编程语言
- 《Drools7.0.0.Final规则引擎教程》第5章 session使用说明详解编程语言
- 《Drools7.0.0.Final规则引擎教程》第4章 Function函数详解编程语言
- 《Drools7.0.0.Final规则引擎教程》第4章 global全局变量详解编程语言
- 《Drools7.0.0.Final规则引擎教程》 定时器详解编程语言
- 《Drools7.0.0.Final规则引擎教程》lock-on-active详解编程语言
- 《Drools7.0.0.Final规则引擎教程》no-loop详解编程语言
- 掌握Redis中的编码格式规则(redis编码格式)
- ATT与Oracle合作改写软件行业规则(at t oracle)
- 引擎基于Redis的规则引擎实现与应用(利用redis实现规则)
- 揭秘ORACLE9I 密码规则你需要知道的一切(ORACLE9I密码规则)