Drools - Проверьте, есть ли в wm несколько событий с разными свойствами
Мне нужен совет по написанию правила для Drools для проверки различных значений.
У меня есть событие как таковое:
public class Event {
int propertyA;
String propertyB;
}
и я хотел бы проверить, есть ли Event
в рабочей памяти, чтобы их propertyA
значения одинаковы, но они имеют 4+ различных propertyB
ценности.
Например: если Event
был бы пользователем, и propertyA
был бы его идентификатором и propertyB
Цвет футболки, я хотел бы спросить: есть ли пользователь, который носил футболки с более чем или равными (>=) 4 разных цветов.
Как я могу реализовать это правило? Спасибо!
1 ответ
Решение
Найдите одно Событие с определенным А, а затем соберите набор B из всех событий с этим А.
$e: Event( $a: propertyA ) // $e ist the last of a group of As
not Event( this after $e, propertyA == $a )
accumulate( Event( propertyA == $a, $b: propertyB );
$set: collectSet( $b );
$set.size() >= 4 )