场景
这样一个问题,如果我执行了很多规则,调用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