2012-04-03 42 views
1

我正在使用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工程確定,但條件從不計算真實的,因爲我從看整套執行的結果。

也就是說,如果我改變In ... valueId ...... idList以區區Equals ... leftId ... rightId,只留下一個ID來覈對(比如,Element4)並進行了測試,讓我我確定我的價值等於Value4,我看到預期的結果,這證明ObjectLookup在這裏正常工作。

所以問題是:

  1. 什麼我做錯了,即爲什麼在同樣的測試中,我知道值等於Value4In不評估爲真?

  2. 我可以用更簡單的方法做到嗎?即,指定一個常量列表並使用它,而不是逐個指定元素,然後從它們構建列表?

  3. NxBRE有什麼好的文檔,所以我不必問這樣的基本問題嗎?

回答

0
  1. 縱觀其變換BRE那些XBRE規則的XSL-T,我想你需要刪除的空間,只需使用逗號的ID分開。 /Rulefiles/text.xbre中的示例使用逗號分隔的ID。

  2. 你可以使用正則表達式,如:(元素1 |元素2 |元素3 |元素4)

  3. 沒什麼除了提供用戶指南(PDF)和在線知識庫。學習/Rulefiles/text.xbre也應該有所啓發。

+0

謝謝!一旦確認工作,我會盡快審查並接受。 – 2012-04-05 13:36:02

相關問題