如何跟踪流口水中的多个匹配项

How to keep track of multiple matches in drools

我的规则会针对与我的产品代码匹配的产品触发多次。我如何获得所有已匹配的产品?我知道我可以使用全局和集合,但是还有其他方法吗?

 global Set set

rule "match multiple products"
  when $prod: Product(code=='PRD-MERCH') from productList
  then
  System.out.println('Matched Products');
  set.add($prod); 
end

首先,让我告诉你,你正在使用的 from productList 看起来很可疑。 productList 是全局的吗?

现在,回到你的问题,如果你对所有匹配的 Product 事实感兴趣,你可以使用 collect 模式:

rule "match multiple products"
when 
  $prods: List(size > 0) from collect (
    Product(code=='PRD-MERCH') from productList
  )
then
  System.out.println("Matched Products"+ $prods); 
end

希望对您有所帮助,