0
Droolsで次のようなシナリオを検討してください。A
とB
のオブジェクトが一致するルールがあります。 Drools:フィールド値に基づいてファクト・マッチングを優先させる
rule 1
when
$a : A()
$b : B($a.matches($b), flagged == false)
then
mofidy($b) { flag($a) }
end
しかしながら、A
オブジェクトはpriority
と呼ばれるフィールドがあり、そしてB
はワーキングメモリ、優先度の最も高い一致A
に到着したときべきフラグも、他のすべての一致A
sを超えます。 Droolsではこれがどのように可能ですか?パフォーマンスにはどのような影響がありますか?
rule 1
when
$a : A()
not A(this != $a, priority > $a.priority)
$b : B($a.matches($b), flagged == false)
then
mofidy($b) { flag($a) }
end
この例で注意すべきことの一つは、高い優先度を持つオブジェクトが挿入されている場合ということで、どの:B.flag()
がtrueにそのflagged
属性を設定している、あなたはこのような何かを試すことができますと仮定すると
感謝を役に立てば幸い! 'when'セグメントは最も高い優先順位を持つ' A'を選んで、 'B'と一致するかどうかを確認しますか?あるいは、与えられた 'B 'に最も一致する' A'を選んでいますか? – fzwd
最初の条件は 'A'をチェックし、2番目は' A'を最も高い優先度でフィルタリングします(優先度が最も高いものを除いてすべてをフィルタリングしています)。 –