在NxBRE中声明和使用静态列表的正确方法

时间:2012-04-03 11:42:11

标签: nxbre

我正在使用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}这里正常工作。

所以问题是:

  1. 我做错了,也就是为什么在同一个测试中,我知道价值等于Value4ObjectLookup不会评估为真?

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

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

1 个答案:

答案 0 :(得分:0)

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

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

  3. 除了提供的用户指南(PDF)和在线知识库之外,什么都没有。学习/Rulefiles/text.xbre也应该有所启发。