2009-05-26 63 views
1

使用Drools 3.0.6(舊的,我知道),在已知的,固定的和相當大的數組或集合中找到事實的有效評估(contains,即「包含在」中)。 由於Drools二元運算符的評估是遞歸的,因此在數組/集合中可以包含幾千個條目,所以在StackOverflowError中使用正常「等於」結果的OR系列。對數組或集合中的元素進行高效的Drools評估

我們有一個單一的值事實和一組值來匹配。當前的「代碼」如下所示:

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

對於大量的固定值(1,2,3,...)。我正在尋找更像「$ data in(1,2,3,...)」的內容。

+0

你能夠粘貼一個代碼示例嗎? – 2009-05-27 02:38:20

回答

0

有時您需要(或者更易讀)將一些評估放入對象本身。然後你可以減少eval語句,比如eval(!$f.isInRange(1, 200))