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