BizTalk Business Rules 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>

Я хочу иметь два правила:

  • Set / Root / AllAccounts / Account [x] / AllCustomers / Customer [primary = 'true'] / canSelfServe = true IF arrearsAmount
  • Set / Root / AllAccounts / Account [x] / AllCustoemrs / Customer [primary = 'true'] / canSelfServer = false IF arrearsAmount> = currentPayment

Где [x] равно 0... количество / Root / AllAccounts / учетных записей, присутствующих в XML.

Я испробовал два простых правила для этого, и каждое правило, похоже, срабатывает x * x раз, где x - это количество учетных записей в XML. Я хочу, чтобы каждое правило срабатывало только один раз для каждой учетной записи.

Любая помощь с благодарностью!

Спасибо

Эндрю

2 ответа

Проверьте свой предикат. Правило запускается один раз для каждой соответствующей комбинации полей, используемых в предикате.

Убедитесь, что правила имеют одинаковый приоритет, на всякий случай (раньше у меня были проблемы с приоритетами). Я также видел, что на уровне правил есть свойство, называемое максимальной глубиной цикла выполнения, которое определяет, сколько раз правило может быть переоценено. Попробуйте поставить 1, если вы уверены, что ваши правила должны оцениваться только один раз для каждой полезной нагрузки. Надеюсь, это поможет.

Другие вопросы по тегам