Drools - 规则检查数组是否不包含仅具有某些属性的对象

时间:2016-07-07 13:49:39

标签: arrays drools contains

我正在尝试编写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

0 个答案:

没有答案