Решение некоторых популярных задач обработки данных с помощью Oracle ESB. Часть 2.Источник: oracle Владимир Энгельс, Дмитрий Севостьянов Oracle СНГ
Данная статья продолжает серию публикаций, в которых будет продемонстрированно, как можно реализовать наиболее популярные шаблоны проектирования, применяя продукт Oracle Enterprise Service Bus. К статьям прилагается архив, где находятся заготовки проектов для реализации их в Oracle JDeveloper. Первая часть этой серии печатается в текущем (апрельском) выпуске "Oracle Magazine/Русское Издание" Во второй статье рассматривается реализация шаблона invalid message channel, который расскрывает тонкости обработки ошибок в процессах ESB. Постановка задачи. Недостатком реализации проекта, приведенного в первой статье, является то, что сообщения, не предусмотренные разработанной схемой Account, теряются системой. Необходимо помещать в очередь "ошибочных сообщений" все сообщения, которые вызывают исключительные ситуации, в том числе и несоответствие схеме данных. Шаблон splitter with invalid message channel. Входные сообщения так же, как и в первой статье, описываются XSD-схемой Account.xsd, которая включает в себя схемы, описывающие разнородные объекты предметной области (Currency.xsd, Customer.xsd, Address. xsd). Реализация. Создание проекта Oracle ESB. 1. Создаем проект Scenario02-err_msg_chan в рабочей области ESB-Samples типа ESB Project. 2. Поместим схемы, описывающие объекты предметной области в созданный проект (Account.xsd, Address.xsd, Currency.xsd, Customer.xsd) 3. Создаем собственную "Систему", назовем ее "ESBsamples" Однако, следует учесть, что система с подобным именем уже существует на сервере ESB. Для этого любым текстовым редактором необходимо открыть файл "ESB_ Samples.esbsys" и заменить идентификатор системы, сгенерированный Jdeveloper, на уже существующий (из проекта Scenario01-split) 4. Создаем собственную "Группу", называем ее "02Scenario-errror_message_channel" 5. Сохраняем все изменения Для облегчения отладки проекта, будем работать с файловыми адаптерами. 6. Создаем файловый адаптер с именем Account- ServiceFile, относящийся к системе/группе ESBsamples. 02Scenario-errror_message_channel, принимающий входные сообщения. Адаптер конфигурируется кнопкой "Configure Adapter Service" 7.Соглашаемся с именем адаптера на первом шаге конфигурирования, выбираем тип операции "Read" на втором шаге конфигурирования. 8. Задаем тип поиска каталога со входными сообщениями через логическое имя и даем логическому имени имя "sourcePath" 9. Выбираем шаблон поиска "File Wildcards" файла в каталоге, содержащем входные сообщения, и устанавливаем шаблон поиска "*.xml" 10. Устанавливаем частоту времени просмотра каталога и возраст создания файла в 1 секунду 11. Указываем схему, с которой будет работать наш файловый адаптер, нажав кнопку "Browse" (Схемы находятся в проекте, после шага 2) 12. Конфигурирование файлового адаптера завершено 13. Вместе с файловым адаптером (на самом деле с любым адаптером, работающим на получение данных) создается сервис маршрутизации, именованный аналогично, но имеющий в качестве суффикса "_RS". Этот адаптер используется для приведения модели данных к внутрисистемной модели. В нашем случае мы будем использовать такую модель данных, которую предоставил нам адаптер. 14. Сохраняем все изменения 15. Конфигурируем логические имена для файловых адаптеров: - Открываем файловый адаптер AccountServiceFile (сделав двойной щелчок мышью на изображении шестеренки в файловом адаптере. - Раскрываем список свойств адаптера, нажав символ "+" около надписи Endpoing properties. Добавляем: - Вводим значение свойства "sourcePath", например "e:\esb-samples\s2-err_msg_chan\input" для Windows или "/tmp/esb-samples/s2/input" для Unix. Если вы разрабатываете проект под Windows, но разворачивать его будете на Unix, то всегда можно поменять значение свойства через ESBConsole 16. Следующее важное обстоятельство: "обработчик ошибок" в настоящее время нельзя создать через Jdeveloper. Поэтому открываем файл "ESB_Samples_02Scenario_ errror_message_channel_AccountServiceFile.esbsvc" в обычном текстовом редакторе и вносим следующее свойство <property name="rejectedMessageHandlers" value="file:// e:\esb-samples\s2-err_msg_chan\err"/> в раздел "<endpointProperties>". Сохраняем изменения. 17. В итоге свойства адаптера должны выглядеть тому, как показано на рисунке Следующим шагом является повторное использование уже разработанного сервиса маршрутизации. Для этого необходимо открыть сервис маршрутизации для задания правил маршрутизации, нажав на рисунок, отмеченный красным квадратиком на пиктограмме сервиса 18. Создаем правило маршрутизации. Раскройте список правил маршрутизации, нажав на знак "+" у надписи Routing rules Нажимаем на значок "+" в строке "execute", чтобы добавить новое правило и выберите в качестве места назначения операцию "execute" сервиса маршрутизации "MainRoutingService" системы ESB-Samples группы 01Scenario-split. 19. Сохраняем изменения 20. Итоговая картинка должна выглядеть следующим образом 21. Разворачиваем проект на сервере 22. Устанавливаем свойство "Validate payload at runtime" для сервиса маршрутизации Итог. В результате мы получили развернытый на сервере проект, реализующий шаблон splitter with invalid message channel. В следующей статье будут рассмотрено применение Oracle ESB для получения нестандартных (не XML) форматов исходящих документов шаблон message-translator.
|