drools:如何分配给局部变量

jef*_*ter 1 java drools

我被Drools 5困住了,需要一些帮助.我想做的是使用传入的DAO并将其中的值赋给局部变量,如下所示...

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

但是Drools 5不允许分配局部变量.我想分配一个局部变量,这样我就不必对DAO进行两次相同的调用.

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

谢谢!杰夫波特

jef*_*ter 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
Run Code Online (Sandbox Code Playgroud)

ta..dar!


Geo*_*met 5

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

或自 5.2 起:

rule "test rule 1"
when
    $carDao : ICarDAO( $x : map, map.contains("a"), map.contains("b") )
then
    // do stuff
end
Run Code Online (Sandbox Code Playgroud)