我正在尝试编写Drools规则来确定项目数组是否包含用户选择的项目。
我的会话看起来类似于以下内容(诚然这是简化但概念是相同的):
data = {
items=[
{
prop1=1,
prop2=2,
prop4=4
}
],
selectedItem={
prop1=1,
prop2=2
prop3=3
}
}
数据从JSON转换为HashMaps和ArrayLists - 其中数据是HashMap,items是HashMaps的ArrayList,selectedItem是HashMap。
基本上,我希望只有当items数组不包含类似于selectedItem的Map时才会触发规则。通过"类似于#34;,我的意思是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