Drools 6 - StatelessKieSession - EventListener

时间:2016-08-04 05:08:46

标签: drools

我有一个简单的规则文件

rule 'rule name 1'
  when
     $i: Test(param1 < 20)
  then
     $i.setStatus('Param1 has invalid value');
end

rule 'rule name 2'
      when
         $i: Test(param1 > 20)
      then
         $i.setStatus('Param2 has invalid value');
    end

rule 'rule name 3'
      when
         $i: Test(param1 == 100)
      then
         $i.setStatus('Param3 has invalid value');
    end

我使用StatelessKieSession来执行上述规则的数据对象。

问题1:执行所有规则后触发方法/侦听器的最简单方法是什么?或者我们如何知道所有规则都已执行?

Qn 2:如果我们可以向StatelessKieSession对象添加一个侦听器,是否有办法将对象传递给侦听器?

1 个答案:

答案 0 :(得分:1)

您可以通过检查KieBase获取所有规则名称 - 请参阅API文档。

您可以根据API设置侦听器。当规则触发时调用的方法将允许您在Map或类似地方中注册该方法。

由于Listener是一个具有特定接口的对象,因此它可以有一个任意的构造函数和/或其他方法,可以将任意数据传递给该Listener。