drools: как назначить локальной переменной

#java #drools

#java #drools

Вопрос:

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

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

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

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

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

Ответ №1:

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

ta..dar!

Ответ №2:

 rule "test rule 1"
when
    $carDao : ICarDAO( $x : map )
    eval (
       $x.contains("a") amp;amp; $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