Drools - Правило, чтобы проверить, не содержит ли массив объект только с определенными свойствами
Я пытаюсь написать правило Drools, чтобы определить, содержит ли массив элементов элемент, выбранный пользователем.
Мой сеанс выглядит следующим образом (по общему признанию, это упрощено, но концепция та же самая):
data = {
items=[
{
prop1=1,
prop2=2,
prop4=4
}
],
selectedItem={
prop1=1,
prop2=2
prop3=3
}
}
Данные преобразуются из JSON в HashMaps и ArrayLists - где данные - это HashMap, items - это ArrayList из HashMaps, а selectedItem - это HashMap.
По сути, я хочу, чтобы правило запускалось только тогда, когда массив items не содержит Map, которая напоминает selectedItem. Под "похожим" я подразумеваю, что prop1 и prop2 одинаковы.
Это возможно с Drools?
Я пытался:
when
Map( data.items not contains Map( prop1 == data.selectedItem.prop1, prop2 == data.selectedItem.prop2 ) )
then
// do something
Но это возвращает:
Описание Местоположение пути Тип ресурса BuildError: Невозможно проанализировать выражение!(Data.items содержит Map( prop1 == data.selectedItem.prop1, prop2 == data.selectedItem.prop2)): java.lang.Class нельзя преобразовать в org.mvel2.util.MethodStub