BizTalk course: 09 Maps

Что учим:

Maps: практика и еще раз практика. Теории здесь мало.

Основные моменты в трансформациях:

  • Изменения в уровнях вложенности.
  • Schema paremeters: MinOccurs and MaxOccurs
  • Преобразования в/из Empty и Null значения.
  • Условные преобразования
  • Коды, их использование, генерация, lookup
  • Script functoids: in-line code; Xslt-code; Xslt-templates
  • Использование pure Xslt.

Задания:

  1. Сделать map схемы Order.xsd в схему ShippingOrder.xsd. Это пример на трансформацию схемы с глубокой иерархией узлов в так называемую «плоскую» схему. [Файлы схем надо сохранить и переименовать, удалив .doc в конце.]
  2. Сделать обратное преобразование: map схемы ShippingOrder в Order.
  3. Условные преобразования: При преобразовании из п.1 использовать такую логику: TotalAmount = Quantity * Price * (100%+Tax). Tax определяется по полю CompanyOriginator.Address.StateProvince: если WA, то Tax = 10%, если CA, то Tax = 8.5%, если BC, то Tax = 12%. Могут быть только три вышеперечисленных значения.
    1. при преобразовании использовать только обычные фанктоиды. Script functoid не испльзовать.
    2. использовать Script functoid: Inline C#
    3. использовать Script functoid: Inline Xslt
    4. использовать Script functoid: Inline Xslt call template
  4. В Order_to_ShippingOrder map для nodes OrderDetail.item и company name добавить дополнительную логику: если node is Null, то в ShippingOrder должно получиться не Null, а Empty string, т.е.пустая строка («»). Соответсвенно изменить схему Order, чтобы эти nodes могли быть null. Использовать те же четыре метода из предыдущего пункта.
  5. В Order_to_ShippingOrder map для nodes Order. добавить дополнительную логику: если StateProvince в полном виде (к примеру Washington), то сделать преобразование в кодWA. Если уже WA, то использовать то, что есть. Если ошибка в StateProvince, то использовать то, что есть. Только для тех StateProvince, которые перечислены в п.3.
  6. Повторить п.5, но для преобразования сделать и использовать  дополнительный C# проект …Helper , класс MapHelper.

В качестве образца с удовольствием рекомендую проект Андрея Кошелева.

5 комментариев

Filed under BizTalk, BizTalk course, Microsoft

5 responses to “BizTalk course: 09 Maps

  1. Андрей

    В BC все-таки налог 12%, а не 14%🙂

  2. Alexander

    Тогда уж и расчет надо ставить правильный
    TotalAmount = Quantity * Price *(1+ Tax/100)

  3. Leonid Ganeline

    Андрей: [комментарии к проекту]
    В Order_to_ShippingOrder используются только не скриптовые
    функтиноиды, за исключениям преобразования названия штата, т.к.
    сделать это по другому нельзя. При вычислении TotalAmount если штат не
    попадает в (CA, WA, BC) то tax принимается равным нулю. Также
    проверяется отсутствие OriginatorName/DilerName, и в этом случае в
    ShippingOrder идут пустые строки.

    В ShippingOrder_to_Order используется inline XSLT, XSLT template, для
    преобразования OriginatorAddress в отдельные поля используется inline
    JScript, для DilerAddress используется external аssembly. Если адрес
    на матчится регулярным выражением, то Line1 принимается равным всему
    адресу, а остальные поля принимаются равными пустым строкам.

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s