Слюни LHS проверить на необязательный факт

Мне нужно написать правило в Drools 6.5, которое проверяет наличие события типа A. Есть второй класс с именем B, который имеет поле date,

При проверке на наличие события Aесли хотя бы одно событие типа B существует, A должно произойти после последней B.date для того, чтобы правило сработало; в противном случае правило должно срабатывать независимо от любого B События.

Оба типа событий A а также B имеют свое собственное явное поле метки времени.

when
        // TODO if at least one event of type B exists, A must happen after max(b.date). Otherwise, the rule must fire regardless of any B
        $a : A( ... )
then
    ...

Как мне выполнить эту проверку?

РЕДАКТИРОВАТЬ: если нет B присутствует в рабочей памяти, и A соответствует требованиям, правило должно действовать независимо.

1 ответ

Решение

Это сработает для каждого А, удовлетворяющего временному ограничению, которое должно произойти после всех B.

$b: B()
not B(this after $b)
$a : A( this after $b )

Если вы хотите запустить это только один раз, для любого числа As, используйте exists перед A и опустите привязку.

Другие вопросы по тегам