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>

私がやりたいことは、2つのルールを持つことです:

  • /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 レコードの数です。

このために 2 つの単純なルールを試してみましたが、各ルールは x * x 回実行されるようです。ここで、x は XML 内の Account レコードの数です。各取引先レコードに対して、各ルールを 1 回だけ実行したいと考えています。

どんな助けでも大歓迎です!

ありがとう

アンドリュー

4

2 に答える 2

0

述語を確認してください。ルールは、述語で使用されるフィールドの組み合わせが一致するたびに 1 回実行されます。

于 2010-03-18T02:07:24.940 に答える
0

念のため、ルールの優先度が同じであることを確認してください (以前に優先度に問題がありました)。また、ルール レベルには、ルールを再評価できる回数を割り当てる最大実行ループ深度というプロパティがあることも確認しました。ペイロードごとに 1 回だけルールを評価する必要があることが確実な場合は、そこに 1 を入れてみてください。これが役立つことを願っています。

于 2010-02-12T00:17:54.947 に答える