BizTalk: маппинг с помощью Xslt

BizTalk Map редактор (Mapper) — хороший редактор, особенно в последней 2010 версии. Но и он иногда не справляется с некоторыми видами маппинга. Когда это случается, самое время вспомнить про Xslt код. Самое время вспомнить, что maps базируются на Xslt коде и выполняются с помощью Xslt парсера.

Щелкните правой клавишей по Mapper Grid (полю между схемами) и выберите команду Properties /Custom XSLT Path.  Введите имя файла с Xslt кодом. Теперь будет выполняться только код из этого файла, забудьте про все связи и функтоиды на картинке Маппера.

Вот пример из реального проекта.

Посмотрим налево на исходную схему. В ней есть два исходных адреса (Address_1, Address_2, City, Zip). Один на верхнем уровне исходной схемы, другой на внутри записи Member_Address с параметром MaxOccurs=* (это означает, что запись может повторяться неограниченное количество раз).

Результирующий адрес расположен внутри записи Locator также с параметром MaxOccurs=*.

Map.Pict

Нам надо трансформировать все исходные структуры адреса в одну результирующую структуру.

К примеру, исходный XML документ выглядит так:

Source.Xml

Тогда результирующий XML документ должен выглядеть так:

Output.Xml

То есть один адрес верхнего уровня и два адреса нижнего уровня преобразовались в три адреса на одном и том же уровне.

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

Попробуем сделать это же с помощью Xslt кода и получим простой и однозначный маппинг:

Xslt

Просто и элегантно.

4 комментария

Filed under BizTalk, BizTalk course

4 responses to “BizTalk: маппинг с помощью Xslt

  1. Добрый день.
    Нашёл Ваш блог совсем недавно, когда стал изучать BizTalk. В прошлом году Вы вели учебный курс по BizTalk, в виду малого количества комментариев я не понял, чем эта инициатива закончилась? Планируется ли продолжение?
    Сам я пока учусь по MS Labs и заглядывая в Ваш блог, и уже думаю, как продолжать дальше…

    • Leonid Ganeline

      Юрий, добрый день,

      Появились BizTalk прокты? Почему вы стали изучать BizTalk, если не секрет?

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

      • Добрый день.
        Наша компания разрабатывает и внедряет свою КИС класса ERP. Было создано множество интеграций с «чужими» системами. Этот зоопарк становится трудоёмко сопровождать. Возникло законное желание снизить трудозатраты путем использования готовых средств интеграции. Поверхностно рассмотрено несколько известных систем, и решено сделать пробный проект (интеграция своего интернет-приложения со сторонним сервисом — площадкой для проведения аукционов) на BizTalk.
        Т.к. готовых специалистов в наличии нет, отдельно взятый специалист назначен на изучение BizTalk.
        В случае успеха, я надеюсь, BTS будет внедрён у заказчиков.

  2. Андрей Овчаренко

    Леонид, добрый день.
    Можно ли связаться с вами в скайпе или почте, по САБЖ.
    С уважением, Андрей.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s