Compare las propiedades de los elementos de la lista en Drools cuando la condición

He insertado una lista de elementos en StatefulKnowledgeSession. Ahora, en la cláusula When del archivo .drl de drools, necesito comparar algunos valores de propiedad de diferentes elementos de la lista.

Por ejemplo, tengo una lista de mascotas [añadida en la sesión como kbSession.insert(list)] donde cada mascota tiene una propiedad de nombre (pet1.name = "adi", pet2.name="flix"). Entonces, ¿qué sería mejor para verificar estos elementos en la cláusula when?

Di en mi archivo test.drl que tengo

regla "artículos para mascotas"

dialecto "java"

cuando

 list.get(0).name != list.get(1).name

luego

 do something!

¡Cualquier sugerencia es muy apreciada!

Saludos.

jeque

preguntado el 05 de septiembre de 12 a las 10:09

1 Respuestas

¿Está tratando de validar todos sus objetos Pet (término técnico correcto - Hechos) contra una regla? Entonces no necesita insertarlo como Lista. Inserte todos los objetos Pet uno por uno como session.insert(petObj) y fireAllRules. El motor de reglas comparará todos los objetos con la regla y luego activará la regla para los objetos coincidentes.

Respondido el 06 de Septiembre de 12 a las 16:09

Gracias gammay por tu respuesta. Bueno, tengo algunas restricciones en las reglas como no-loop y Lock-on-active son verdaderas. Por lo tanto, necesito una forma de verificar la lista de hechos (la lista se insertará en la sesión) los valores de propiedad del elemento en la regla. Gracias nuevamente por su respuesta. - el jeque Akther

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.