Проект №1
User Requirements:
- Система обработки заказов
- Xml документы Order приходят от разных заказчиков в файловый фолдер.
- Order состоит из шапки и из нескольких Order Detail строк. Каждая строка – это описание заказа для отдельного продукта.
- Есть три типа продуктов. Продукт каждого типа поставляет отдельная Shipping компания.
- Xml документы Shipping доставляются в виде файлов в файловые фолдеры. Есть три фолдера, каждый для отдельной Shipping компании.
Implementation requirements
- Из каждого документа Order делается несколько документов Shipping. Один Shipping на каждую Order Detail строку.
- Для преобразования Order в Shipping-s обычно используется два метода:
- Disassemble в pipeline, используя envelope cхему (google with “BizTalk disassembler”)
- Disassemble в orchestration, преобразовывая сообщение в объект XmlDocument , далее в string, потом выделяя Order Detail помощью XPath выражения. Т.е.манипуляцией strings. (google with “BizTalk debatching”)
- Используйте любой из методов, на свое усмотрение. Как это делать, найдите в интернете. Можете использовать код в BizTalk SDK и код из многочисленных блогов.
- Прочитайте теорию в http://msdn.microsoft.com/en-us/library/aa577393(v=BTS.70).aspx . Не забудьте прочитать все статьи включающие в себя вышеназванную статью.
- Схемы для Order, Order Detail, Shipping делайте на свое усмотрение. Maps – тоже.
- Проект считается готовым, когда тестовые файлы пройдут от входного фолдера к выходным фолдерам.
- Мне пришлите файлы проекта в zip файле. Кроме того пришлите мне сэкспортированные отдельные файлы deployed application: msi и bindings.
- Время на весь проект: для опытного BizTalk developer – 1 час, для entry level – >5 часов.
Дополнение: Вначале я задал требование по созданию Canonical Order. Это требование отменяется.
В статьях про то, как делать схему для Envelope упоминается специальный элемент . Это специальный элемент схемы, это не элемент XML target document! Он используется в схеме на месте, где в XML target document может быть “все, что угодно”, т.е.любой Xml элемент, как простой, так и сложный, в том числе и вложенный Xml документ. См. [http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#any].
В Schema Editor при создании нового элемента в списке возможных элементов/аттрибутов… есть и этот пресловутый Any.
Еще здесь есть один не совсем понятный момент. Схема/документ Envelope и есть Order. Просто Envelope – это обобщенное название внешнего документа, в который вложены другие документы. Т.е.OrderDetails вложены в Order, который и является в нашем случае Envelope.
Еще одно замечание:
Если вложенные документы извлекаются из envelope в оркестрейшн, то схема движения сообщений такая:
ReceivePort –> Order -> [MsgBox -->] Orchestration ==> OrderDetails ==> [MsgBox ==>] SendPorts
Если же документы извлекаются из из envelope в pipeline ReceivePort:
ReceivePort ==> OrderDetails ==> [MsgBox ==>] Orchestrations ==> OrderDetails ==> [MsgBox ==>] SendPorts
Главная разница в том, что во втором варианте из RP в MsgBox попадаютс стразу НЕСКОЛЬКО сообщений, не одно! Каждое из них активирует СВОЮ копию Orch!!!
Уведомление: BizTalk course: 10 Orchestrations | Biztalkien