2010-02-10 57 views
1

我試圖創建我認爲應該是一個相對簡單的業務規則來操作重複XML模式中的元素。BizTalk業務規則引擎 - 重複元素

考慮下面的XML片斷(這是簡化去掉命名空間,爲便於閱讀):

<Root> 
    <AllAccounts> 
    <Account id="1" currentPayment="10.00" arrearsAmount="25.00"> 
     <AllCustomers> 
     <Customer id="20" primary="true" canSelfServe="false" /> 
     <Customer id="21" primary="false" canSelfServe="false" /> 
     </AllCustomers> 
    </Account> 
    <Account id="2" currentPayment="10.00" arrearsAmount="15.00"> 
     <AllCustomers> 
     <Customer id="30" primary="true" canSelfServe="false" /> 
     <Customer id="31" primary="false" canSelfServe="false" /> 
     </AllCustomers> 
    </AllAccounts> 
</Root> 

我想要做的是有兩條規則:

  • 設置/根/ AllAccounts/Account [x]/AllCustomers/Customer [primary ='true']/canSelfServe = true IF arrearsAmount < currentPayment
  • Set/Root/AllAccounts/Account [x]/AllCustoemrs/Customer [primary ='true']/canSelfServer =假IF arrearsAmount> = currentPayment

其中[x]是0 ...中存在的XML /根/ AllAccounts /帳戶記錄數。

我試過兩個簡單的規則,每條規則似乎都會觸發x * x次,其中x是XML中帳戶記錄的數量。我只希望每個規則針對每個帳戶記錄觸發一次。

任何幫助非常感謝!

感謝

安德魯

回答

0

確保規則具有相同的優先級,以防萬一(我之前曾與優先級問題)。我還看到,在規則級別,有一個稱爲最大執行循環深度的屬性,它指定了可以重新評估規則的次數。如果你確定你的規則只應該在每個有效載荷上評估一次,那麼試着把1放在那裏。我希望這有幫助。

0

檢查您的謂詞。規則爲謂詞中使用的每個匹配字段組合觸發一次。