drools: как назначить локальную переменную - PullRequest
1 голос
/ 13 октября 2011

Я застрял в Drools 5 и мне нужна небольшая помощь.То, что я хотел бы сделать, это использовать переданный в DAO и присвоить значение из этого локальной переменной, например так:

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

Drools 5 не разрешает присваивать локальные переменные.Я хотел бы присвоить локальную переменную, чтобы мне не приходилось делать один и тот же вызов дважды в DAO.

Так, может, кто-то указал мне правильное направление, пожалуйста?

Спасибо!Джефф Портер

Ответы [ 2 ]

6 голосов
/ 13 октября 2011
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!

4 голосов
/ 14 октября 2011
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
...