如何在 drools 规则中检查集合的大小

How to check the size of a set in drools rules

我在 drool 中有以下规则

rule klFor2001 salience 30
when
 exists( Vgdokfag( Fagkode() == "FOR2001", ( Merknadkode() != "FAM13" ||
                   Merknadparameter() in ("FO1010", "FO1030", "FO1040"))))
 vgs: HashSet() from collect(Vgdokfag( Fagkode() contains "UPF",
                                 (Merknadkode() == "FAM13" ||
                                 Merknadparameter() in ("FO1010","FO1030", "FO1040"))) )
                                      
then
  insert(getKlIdr20xx("KL_IDR2001",true));
end

所以我想做的是

  1. 检查是否有 Vgdokfag For2001 作为 Fagkode 并且 Merknadkode 不等于 "FAM13" 或 Merknadparameter 是以下字符串之一("FO1010","FO1030", "FO1040")。
  2. 检查是否存在至少两个 VgdokFag 事实在其“Fagkode”中具有“UPF”并且 Merknadkode 等于“FAM13”或 Merknadparameter 是以下字符串之一(“FO1010”、“FO1030”、“FO1040”)。

我不知道第二个怎么做。我试图在给定条件下获取所有事实,然后检查集合的大小是否大于 2,但由于某种原因我不能写这样的东西

eval(vgs.size() > 2)

我确定我在这里做错了什么,有人可以帮助我吗?

干杯,

es

你们真的很亲密。您可以将 size 约束直接添加到 HashSet:

vgs: HashSet(size >= 2) from collect(...)