我正在使用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
工作正常,但条件永远不会评估为true,正如我从整个集合执行的结果中看到的那样。
即如果我将In
... valueId
... idList
更改为Equals
... leftId
... {{1只留下一个要检查的ID(例如rightId
)并进行测试,以便我确定我的值等于Element4
,我看到预期的结果,证明{{1}这里正常工作。
所以问题是:
我做错了,也就是为什么在同一个测试中,我知道价值等于Value4
,ObjectLookup
不会评估为真?
我可以用更简单的方式做到这一点。即,指定一个常量列表并使用它,而不是逐个指定元素,然后从中构造列表?
NxBRE有没有好的文档,所以我不必问这样的基本问题?
答案 0 :(得分:0)
查看在BRE中转换XBRE规则的XSL-T,我认为您需要删除空格并使用逗号分隔ID。 /Rulefiles/text.xbre中的示例使用逗号分隔的ID。
您可以使用正则表达式,例如:(Element1 | Element2 | Element3 | Element4)
除了提供的用户指南(PDF)和在线知识库之外,什么都没有。学习/Rulefiles/text.xbre也应该有所启发。