《Drools7.0.0.Final规则引擎教程》获取规则名称和包名详解编程语言

场景

这样一个问题,如果我执行了很多规则,调用fireAllRules方法只会返回触发了几条规则,那么我怎么知道哪些规则被触发了,并把这些触发的规则的名称存如数据库呢?

其实这个问题很好解决,也是实践中必然会遇到的问题,为大家写了一个简单的示例。

实践

在前面的RHS语法章节中我们已经讲过预定义变量drools的简单实用,其实通过它就可以轻松的拿到规则相关的信息。下面看实例:
规则内容如下:

package com.rules 
 rule "Get name and package demo" 
 agenda-group "Name and package" 
 when 
then 
    System.out.println("The rule's name is '" + drools.getRule().getName() + "'"); 
    System.out.println("The rule's package is  '" + drools.getRule().getPackageName() + "'"); end

执行规则代码如下:

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

执行结果:

The rule's name is 'Get name and package demo' 
The rule's package is  'com.rules' 
Fire 1 rule(s)!

源代码已上传至gitHub:https://github.com/secbr/drools

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/15191.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论