【问题标题】:Correct way to declare and use static lists in NxBRE在 NxBRE 中声明和使用静态列表的正确方法
【发布时间】:2012-04-03 11:42:11
【问题描述】:

我正在使用 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 更改为 Equals ... leftId ... rightId,则只留下一个 id 进行检查(例如, Element4) 并进行测试,以便我确定我的值等于Value4,我看到了预期的结果,这证明ObjectLookup 在这里可以正常工作。

所以问题是:

  1. 我做错了什么,即为什么在同一个测试中,我知道值等于 Value4In 不会评估为 true?

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

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

【问题讨论】:

    标签: nxbre


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

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

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

    【讨论】:

    • 谢谢!确认有效后,我会尽快审核并接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2014-11-09
    • 2011-10-24
    • 2012-07-05
    相关资源
    最近更新 更多