我的用例是返回第一个匹配的规则,而不是匹配所有其他规则。有没有办法做到这一点? knowledgeSession.fireAllRules(max)有什么意义?
答案 0 :(得分:2)
fireAllRules(max)方法基本上采用您想要的规则匹配量。它在内部所做的就是创建一个限制匹配量的AgendaFilter。 (参见AgendaFilter界面文档)。跳过参数意味着使用对每个可能的规则都返回true的过滤器,因此您将匹配所有内容。
如果您想要完全匹配1条规则,并且您想知道它是哪一条,则可以将此方法与AgendaEventListener结合使用。
你能做的是:
但是,这并不能让您控制匹配的规则。使用过滤器时未匹配的所有规则将在下次触发所有规则时进行匹配(除非再次限制规则执行,依此类推)。