我正在使用 NxBRE 规则引擎,并且需要能够检查列表中是否有某个值。这是我尝试的:
定义列表元素:
<String id="Element1" value="Value1"/>
<String id="Element2" value="Value2"/>
<String id="Element3" value="Value3"/>
<String id="Element4" value="Value4"/>
检查条件:
<In valueId="ValueId" idList="Element1, Element2, Element3, Element4">
<ObjectLookup id="ValueId" objectId="MyObject" member="GetValue">
<Argument valueId="MyArgument"/>
</ObjectLookup>
</In>
ObjectLookup
工作正常,但条件永远不会评估为真,正如我从整个集合执行的结果中看到的那样。
即,如果我将 ... ... 更改In
为valueId
... ... ,idList
只留下一个 id 来检查(例如,)并进行测试,以便我确定我的值等于,我会看到预期的结果,这证明这里可以正常工作。Equals
leftId
rightId
Element4
Value4
ObjectLookup
所以问题是:
我做错了什么,即为什么在同一个测试中,我知道 value equals
Value4
不In
评估为真?我可以用更简单的方式来做吗?即,指定一个常量列表并使用它,而不是一个一个地指定元素然后从中构造列表?
NxBRE 有什么好的文档,所以我不必问这样的基本问题吗?