BizTalk Business Rules Engine - повторяющиеся элементы - PullRequest
1 голос
/ 10 февраля 2010

Я пытаюсь создать то, что, по моему мнению, должно быть относительно простым бизнес-правилом для работы с повторяющимися элементами в схеме 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. Я хочу, чтобы каждое правило срабатывало только один раз для каждой учетной записи.

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

Спасибо

Andrew

Ответы [ 2 ]

0 голосов
/ 18 марта 2010

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

0 голосов
/ 12 февраля 2010

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

...