1

我正在使用 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工作正常,但条件永远不会评估为真,正如我从整个集合执行的结果中看到的那样。

即,如果我将 ... ... 更改InvalueId... ... ,idList只留下一个 id 来检查(例如,)并进行测试,以便我确定我的值等于,我会看到预期的结果,这证明这里可以正常工作。EqualsleftIdrightIdElement4Value4ObjectLookup

所以问题是:

  1. 我做错了什么,即为什么在同一个测试中,我知道 value equalsValue4In评估为真?

  2. 我可以用更简单的方式来做吗?即,指定一个常量列表并使用它,而不是一个一个地指定元素然后从中构造列表?

  3. NxBRE 有什么好的文档,所以我不必问这样的基本问题吗?

4

1 回答 1

0
  1. 查看将 XBRE 规则转换为 BRE 规则的 XSL-T,我认为您需要删除空格并使用逗号分隔 ID。/Rulefiles/text.xbre 中的示例使用逗号分隔的 ID。

  2. 您可以使用正则表达式,例如: (Element1|Element2|Element3|Element4)

  3. 除了提供的用户指南 (PDF) 和在线知识库外,别无其他。学习 /Rulefiles/text.xbre 也应该对你有所启发。

于 2012-04-04T11:42:50.270 回答