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

时间:2010-02-10 15:11:23

标签: biztalk business-rules biztalk-rule-engine

我正在尝试创建我认为应该是一个相对简单的业务规则来操作XML模式中的重复元素。

考虑以下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>

我想要做的是有两条规则:

  • 设置/ Root / AllAccounts / Account [x] / AllCustomers / Customer [primary ='true'] / canSelfServe = true IF arrearsAmount&lt; currentPayment
  • 设置/ Root / AllAccounts / Account [x] / AllCustoemrs / Customer [primary ='true'] / canSelfServer = false IF arrearsAmount&gt; = currentPayment

其中[x]为0 ... XML中存在/ Root / AllAccounts / Account记录的数量。

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

任何帮助都非常感谢!

由于

安德鲁

2 个答案:

答案 0 :(得分:0)

确保规则具有相同的优先级,以防万一(之前我遇到优先级问题)。我还看到,在规则级别,有一个名为maximum Execution Loop Depth的属性,它指定重新评估规则的次数。如果您确定每个有效负载只应评估一次规则,请尝试将1放在那里。我希望这会有所帮助。

答案 1 :(得分:0)

检查你的谓词。对于谓词中使用的每个匹配的字段组合,规则将触发一次。