![]() | ||||||||||||||||||||||||||||||
![]() |
![]() |
|
|
|||||||||||||||||||||||||||
![]() |
|
Решение некоторых популярных задач обработки данных с помощью 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.
Ссылки по теме
|
|