Решение некоторых популярных задач обработки данных с помощью 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 (сделав двойной щелчок мышью на изображении шестеренки в файловом адаптере . Раскройте список свойств адаптера, нажав символ "+" около надписи Endpoing properties .

Добавьте новое свойство

Введите значение свойства " 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 ).


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=20060