Biztalk циклическое поведение - PullRequest
0 голосов
/ 12 апреля 2011

Доброе утро,

Я пытаюсь изучить BizTalk, и он делает что-то, чего я не понимаю.

Я выводю XML для адресов сотрудников.Петлевой функтоид создает два элемента «связи».Я ожидал увидеть «CountrySubDivisionCode» как дочерние элементы в ОБА из них, но они появляются только один раз:

<ns0:Communication sequence="1">
    <ns0:ChannelCode>Telephone</ns0:ChannelCode>
    <ns0:UseCode>Personal</ns0:UseCode>
    <ns0:DialNumber>1234567890</ns0:DialNumber>
    <ns0:Address>
        <ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
        <ns0:CityName>Some City</ns0:CityName>
        <ns0:CountrySubDivisionCode name="County">Jackson</ns0:CountrySubDivisionCode>
        <ns0:CountrySubDivisionCode name="State">MO</ns0:CountrySubDivisionCode>
        <ns0:CountryCode>US</ns0:CountryCode>
        <ns0:PostalCode>14099</ns0:PostalCode>
    </ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="2">
    <ns0:ChannelCode>Telephone</ns0:ChannelCode>
    <ns0:UseCode>Business</ns0:UseCode>
    <ns0:DialNumber>0987654321</ns0:DialNumber>
    <ns0:Address>
        <ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
        <ns0:CityName>Some City</ns0:CityName>
        <ns0:CountryCode>US</ns0:CountryCode>
        <ns0:PostalCode>14099</ns0:PostalCode>
    </ns0:Address>
</ns0:Communication>

Вход представляет собой плоскую схему.

Для Коммуникации есть одна циклическая функцияэлемент с номерами телефонов.Его вывод - это элемент Communication в выходной схеме.

Есть еще один петлевой функтоид с входами состояния и округа. Его вывод - это элемент CountrySubDivisionCode в выходной схеме.

Как отображение определяет, чтовыход, а что нет?Разве это не выводит второй набор, потому что они будут дубликатами?Все учебники, которые я нашел, выглядят как копии и вставки версий одного и того же исходного материала, и это довольно легко.

Спасибо

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Проверьте карту (щелкните правой кнопкой мыши в обозревателе решений) и щелкните ссылку XSL в окне вывода Visual Studio. Это лучший способ выяснить, что делает маппер, так как вы увидите сгенерированный XSLT.

0 голосов
/ 13 апреля 2011

Я смог это исправить экспериментально. Я полагаю, как работает петлеобразный функтоид:

  • создает список входных значений для каждого из входов
  • Итерирует по списку, создавая один вывод для каждого ввода. Когда он делает это, он удаляет (НЕ обнуляет или очищает) другие входные данные.
  • Как только список исчерпан, НЕТ выходов (список пуст).

У меня были «вложенные» петлевые функтоиды. Внешний функтоид имел три входа, а внутренний функтоид имел два входа. На первом выходе внешнего функтоида использовались оба входных сигнала от внутреннего функтоида (которые были подавлены из-за положения и потеряны). На всех последующих выходах внешнего функтоида внутренний функтоид больше не использовался, поэтому ничего не выводил.

Для моего решения мне пришлось переставить входы во внешний функтоид, чтобы адресная часть была на первом месте. Внутренний функтоид правильно вывел две страновые дивизии. Для последующих телефонных рядов не было оставшихся выходов, и ни один не был желателен.

Майкл и Мусио спасибо за помощь!

...