我有一个简单的规则文件
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对象添加一个侦听器,是否有办法将对象传递给侦听器?
答案 0 :(得分:1)
您可以通过检查KieBase获取所有规则名称 - 请参阅API文档。
您可以根据API设置侦听器。当规则触发时调用的方法将允许您在Map或类似地方中注册该方法。
由于Listener是一个具有特定接口的对象,因此它可以有一个任意的构造函数和/或其他方法,可以将任意数据传递给该Listener。