2009-05-26 3 views
1

Drools 3.0.6(以前は知っています)を使用して、既知の固定されたかなり大きな配列またはコレクションの事実を見つけるための効率的な評価(contains、すなわち「含まれる」)。 Droolsバイナリ演算子の評価が再帰的であるため、通常の "equals"のOR系列を使用すると、ArrayOverflowErrorの結果として配列/コレクションに数千のエントリが含まれる可能性があります。配列またはコレクション内の要素に対する効率的なDroolsの評価

単一のファクトと、一致する値の配列があります。現在の「コード」は、次のようになります。

$f: Fact(name="TheFact", $data) 
eval(!($data.equals("1") || $data.equals("2") || $data.equals("3") ...)) 

固定値(1,2,3、...)が多数あります。私はもっ​​と "$ 1,2,3、...のデータ"のようなものを探しています。

+0

コードサンプルを貼り付けることはできますか? –

+0

単一のファクトと、一致する値の配列があります。現在の「コード」は次のようになります: $ f:Fact(name = "TheFact"、$ data) eval(!($ data.equals( "1")|| $ data.equals( "2") || $ data.equals( "3")...)) 多数の固定値(1,2,3、...)。私はもっ​​と "$ 1,2,3、...のデータ"のようなものを探しています。 – Mirvnillith

+0

おっと、質問にも追加されました。 – Mirvnillith

答えて

0

時には、評価の一部をオブジェクト自体に入れる必要がある(または読みやすい)ことがあります。次に評価ステートメントを縮小してeval(!$f.isInRange(1, 200))

関連する問題