A
とB
のイベントを処理するDroolsルールセットを作成しています。多くのルールでは、A
の属性timestamp
と、そのイベントを修飾するためにB
の属性windowStart
のサブセットの最大値を比較する必要があります。 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を分岐する代わりに、そのための欠点や利点がありますか?