![]() |
Решение некоторых популярных задач обработки данных с помощью Oracle ESB . Часть 3.Источник: oracle Дмитрий Севостьянов, Oracle СНГ
Автор: Дмитрий Севостьянов, Oracle СНГДанной статьей продолжается серия публикаций, в которых будет продемонстрированно - как, применяя продукт Oracle Enterprise Service Bus , можно реализовать наиболее популярные шаблоны проектирования. К статьям прилагается архив, где находятся заготовки проектов для реализации их в Oracle JDeveloper . В третьей статье рассматривается реализация шаблона message translator , который позволяет получить исходящие документы в нестандартных (не XML) форматах. Постановка задачи. Есть входная очередь, необходимо преобразовать XML -документ по заданному XSLT -шаблону и поместить его в выходную очередь. Входные сообщения так же как и в предыдущих статьях описываются XSD -схемой Account . xsd , которая включает в себя схемы, описывающие разнородные объекты предметной области ( Currency . xsd , Customer . xsd , Address . xsd )
Создание проекта Oracle ESB . • Создаем проект Scenario 03- xslt в рабочей области ESB - Samples типа ESB Project .
• Поместим схемы, описывающие объекты предметной области в созданный проект ( Account . xsd , Address . xsd , Currency . xsd , Customer . xsd ) • Создаем собственную "Систему", называем ее " ESB - samples "
Однако следует учесть, что система с подобным именем уже существует на сервере ESB . Для этого необходимо открыть файл "ESB_Samples.esbsys" любым текстовым редактором и заменить идентификатор системы, сгенерированный JDeveloper на уже существующий (из проекта Scenario 01- split )
• Создаем собственную "Группу", называем ее "03 Scenario - message _ translator " • Сохраните все изменения Для облегчения отладки проекта, будем работать с файловыми адаптерами. • Создаем файловый адаптер с именем AccountServiceFile, относящийся к системе/группе ESB-samples.03Scenario-message_ translator , принимающий входные сообщения. Адаптер конфигурируется кнопкой "Configure Adapter Service"
• Соглашаемся с именем адаптера на первом шаге конфигурирования, выбираем тип операции " Read " на втором шаге конфигурирования.
• Задаем тип поиска каталога со входными сообщениями через логическое имя и даем логическому имени имя " sourcePath "
• Выбираем шаблон поиска " File Wildcards " файла в каталоге, содержащем входные сообщения, и устанавливаем шаблон поиска " *. xml "
• Устанавливаем частоту времени просмотра каталога и возраст создания файла в 1 секунду
• Указываем схему, с которой будет работать наш файловый адаптер, нажав кнопку " Browse " (Схемы находятся в проекте, после шага 2 )
• Конфигурирование файлового адаптера завершено
• Вместе с файловым адаптером (на самом деле с любым адаптером, работающим на получение данных) создается сервис маршрутизации, именованный аналогично, но имеющий в качестве суффикса "_ RS ". Этот адаптер используется для приведения модели данных к внутрисистемной модели. В нашем случае мы будем использовать такую модель данных, которую предоставил нам адаптер. • Сохраните все изменения • Конфигурируем логические имена для файловых адаптеров. Откройте файловый адаптер AccountServiceFile (сделав двойной щелчок мышью на изображении шестеренки в файловом адаптере Добавьте новое свойство
Введите значение свойства " sourcePath ", например " e:\esb-samples\s3-msg_trans\input " для Windows или "/tmp/esb-samples/s3/input " для Unix. Если вы разрабатываете проект под Windows , но разворачивать его будете на Unix , то всегда можно поменять значение свойства через ESBConsole • Сохраните все изменения • Создаем основной сервис маршрутизации " XSLTRoutingService ", отвечающий за XSLT -преобразование входного документа в выходной по заданному XSL -шаблону. Генерируем WSDL из существующей XSD -схемы (Схема Account , элемент Operation )
• Конфигурируем сервис маршрутизации для работы с ответным сообщением. Для генерации схемы выходного сообщения необходимо определить свой собственный формат данных.
• Создаем свой собственный формат, основанный на типе данных CSV ( Comma separated value )
• В качестве шаблона указываем файл NativeDataFormat . txt , состоящего из двух строк: NativeTabulatorFormat justExample
• В качестве разделителя полей указываем табуляцию ( Tab)
На основе заданного нами шаблона NativeDataFormat.txt JDeveloper создал схему данных NativeDataFormat_1.xsd .
• Сохраните все изменения • Создаем выходной файловый адаптер " OutputFileService ", сохраняющий данные в файл.
• В качестве схемы данных указываем созданную нами схему NativeDataFormat _1. xsd
• Сохраните все изменения • Конфигурируем свойство, задающее логический путь к каталогу для адаптера (Установите свойство outputPath в значение E :\ esb - samples \ s 3- msg _ trans )
• Связываем выход сервиса маршрутизации XSLTRoutingService с файловым адаптером OutputFileService . ( Откройте XSLTRoutingService двойным щелчком мыши )
В качестве целевой операции указываем операцию Write файлового адаптера.
• Сохраните все изменения • Связываем сервис маршрутизации AccountServiceFile_RS с сервисом маршрутизации XSLTRoutingService . ( Откройте AccountServiceFile_RS двойным щелчком мыши )
• Сохраните все изменения • Вы должны увидеть следующую картинку в рабочей области
• Создаем XSL-шаблон преобразования входного документа в выходной, для чего откройте XSL-редактор, сделав двойной щелчок мыши по значку XSL-преобразования в сервисе маршрутизации XSLTRoutingService .
• Выберите пункт "Create New Mapper File)
• В открывшемся визуальном редакторе создайте следующее преобразование. Для этого из панели компонентов (Component Palette) из раздела строковых функций (String Fuctions) перетащите на среднюю часть рабочей области функцию concat. Соедините левый и правый край пиктограммы функции с соответствующими полями (как показано на рисунке)
• Настройку функции преобразования можно посмотреть, сделав двойной щелчок на пиктограмме функции
• Сохраните все изменения • Проект должен принять вид, как показано на рисунке.
• Разверните проект на сервере
Итог. В результате мы получили развернытый на сервере проект, реализующий шаблон message translator . В следующей статье будут рассмотрено решение задачи обогащения потока данных стандартными средствами Oracle ESB для (шаблон c ontent enricher ). |