2010-02-10 31 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

检查您的谓词。规则为谓词中使用的每个匹配字段组合触发一次。