• Авторизация


Messaging without orchestration 26-02-2005 15:37 к комментариям - к полной версии - понравилось!


Задача такая : сканируем ftp location; для каждого обнаруженного там файла - обновляем базу, соответственно его содержанию. Например, файлы, кот. будут находиться на ftp, имеют такую структуру:


<

ns0:Result batchNum="22" xmlns:ns0="http://pbControl.ResultSchema" />

всего с одним attributed element для простоты. В базе обновляем таблицу, в кот., скажем, одно из полей равняется атрибуту batchNum.


Можно, конечно, писать orchestration - receive shape для получения из ftp, transform shape (obviously embraced by construction block) with mapping и send shape, связанный с SQLAdapter-generated-schema, в кот. есть вызов stored procedure или updategram на обновление. Работает.


Но можно и не писать orchestration вовсе : создаем receive port (with ftp receive location), в его inbound maps добавляем наш map из transform shape, т.е. любой поступающий туда документ из ftp будет сразу преобразовываться в SQL updategram - 2 shape из orchestration уже не понадобятся. Можно, кстати, добавить несколько inbound maps - каждый для документов со своей schema. Можно добавить и несколько receive locations - send port ведь привязывается к receive port, не к receive location. Осталось добавить send port для SQL. Добавили. Теперь свяжем его напрямую с уже созданным receive port. Через filter : Edit->Filters & Maps->Filters. Фильтр будет такой : Property->BTS.ReceivePortName, Operation->'==', Value->[Имя созданного receive port].Вот и все. Orchestration не понадобился, а вместе с ним и its performance penalty.


Как же это работает? Чтобы понять, стоит просто взглянуть на BTSSubscriptionViewer - сконфигурированный так send port просто создает свой subscription

[показать]
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Messaging without orchestration | Oleg_Kleiman - Soft kibitzing | Лента друзей Oleg_Kleiman / Полная версия Добавить в друзья Страницы: раньше»