BizTalk业务规则引擎-重复元素

BizTalk业务规则引擎-重复元素,biztalk,business-rules,biztalk-rule-engine,Biztalk,Business Rules,Biztalk Rule Engine,我试图创建一个相对简单的业务规则,在XML模式中对重复的元素进行操作 考虑以下XML片段(为了可读性,删除了名称空间,简化了该片段): 我想做的是有两条规则: Set/Root/AllAccounts/Account[x]/AllCustomers/Customer[primary='true']/canselfservice =如果欠款金额=当前付款,则为false 其中[x]是0…XML中存在的/Root/AllAccounts/Account记录数 为此,我尝试了两个简单的规则,每

我试图创建一个相对简单的业务规则,在XML模式中对重复的元素进行操作

考虑以下XML片段(为了可读性,删除了名称空间,简化了该片段):


我想做的是有两条规则:

  • Set/Root/AllAccounts/Account[x]/AllCustomers/Customer[primary='true']/canselfservice =如果欠款金额<当前付款,则为true
  • Set/Root/AllAccounts/Account[x]/AllCustoemrs/Customer[primary='true']/canSelfServer =如果欠款金额>=当前付款,则为false
其中[x]是0…XML中存在的/Root/AllAccounts/Account记录数

为此,我尝试了两个简单的规则,每个规则似乎触发x*x次,其中x是XML中的帐户记录数。我只希望每个规则对每个帐户记录触发一次

非常感谢您的帮助

谢谢


Andrew

确保规则具有相同的优先级,以防万一(我以前在优先级方面有问题)。我还看到,在规则级别上,有一个称为“最大执行循环深度”的属性,它指定可以重新评估规则的次数。如果您确定您的规则在每个有效负载中只应评估一次,请尝试将1放在那里。我希望这有帮助。

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

<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>