1

我正在尝试创建我认为应该是一个相对简单的业务规则来操作 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 < currentPayment
  • 设置 /Root/AllAccounts/Account[x]/AllCustoemrs/Customer[primary='true']/canSelfServer = false IF arrearsAmount >= currentPayment

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

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

非常感谢任何帮助!

谢谢

安德鲁

4

2 回答 2

0

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

于 2010-03-18T02:07:24.940 回答
0

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

于 2010-02-12T00:17:54.947 回答