0
我正在編寫一個Drools規則集處理事件,類型爲A
和B
;並且在許多規則中,我需要將A
的屬性timestamp
與B
的屬性windowStart
的子集的最大值進行比較,以限定該A
事件。如果B
的子集是空集,我假定沒有windowStart,因此值0
是需要的。任何A
的與timestamp
大於windowStart
將符合資格。Drools:如果不匹配,查詢的默認值
考慮爲闡述如下僞代碼:
long findMaxWindowStartOrZero(int bID)
{
Set bSubset = getAllBWithID(bID);
if(bSubset is empty) return 0;
return max(bSubset, B::windowStart);
}
沒有這樣的查詢,有關這個比較每一個規則的LHS需要複製,一旦考慮到沒有任何B
的,一旦發現實際最大當子集非空時。
擁有上述僞代碼這樣的查詢使得此任務變得相當容易,並且不需要分支LHS。有可能這樣做嗎?這樣做有沒有什麼缺點或好處,而不是分支上述規則的LHS?