2011-10-13 114 views
1

我被困在Drools 5中,需要一点帮助。 我想要做的就是使用DAO中通过,并从一个值赋给一个局部变量,像这样...drools:如何分配到本地变量

rule "test rule 1" 
when 
    $carDao : ICarDAO() 
    $x : $carDao.getMap() 
    eval (
     $x.contains("a") && $x.contains("b") 
    ) 
then 
// do stuff 
end 

Drools的5不允许局部变量的赋值虽然。 我想分配给一个局部变量,这样我就不必对该DAO进行两次相同的调用。

那么有人可以指出我正确的方向吗?

谢谢! Jeff Porter

回答

4
rule "test rule 1" 
when 
    $carDao : ICarDAO($x : map) 
    eval (
     $x.contains("a") && $x.contains("b") 
    ) 
then 
    // do stuff 
end 

或自5.2:

rule "test rule 1" 
when 
    $carDao : ICarDAO($x : map, map.contains("a"), map.contains("b")) 
then 
    // do stuff 
end 
6
rule "test rule 1" 
when 
    $carDao : ICarDAO() 
    $x: java.util.Map() from $carDao.getMap() 
    eval (
     $x.contains("a") && $x.contains("b") 
    ) 
then 
// do stuff 
end 

ta..dar!