我正在编写一个 Drools 规则集处理类型为A
and的事件B
;并且在许多规则中,我需要将A
' 属性与'属性timestamp
子集的最大值进行比较以限定该事件。如果该子集是一个空集,我假设没有 windowStart,因此需要该值。任何具有大于的 a都将符合条件。B
windowStart
A
B
0
A
timestamp
windowStart
考虑以下伪代码进行详细说明:
long findMaxWindowStartOrZero(int bID)
{
Set bSubset = getAllBWithID(bID);
if(bSubset is empty) return 0;
return max(bSubset, B::windowStart);
}
如果没有这样的查询,则需要复制与此比较有关的每个规则的 LHS,一次是为了说明不存在任何规则B
,一次是为了在子集非空时找到实际的最大值。
像上面的伪代码这样的查询使这项任务变得更加容易,并且不需要分支 LHS。有可能这样做吗?这样做而不是分支提到规则的 LHS 有什么缺点或好处吗?