|
Untitled Document
Bладимир Энгельс ,
Дмитрий Севостьянов
Oracle СНГ
Решение некоторых популярных задач обработки данных с помощью Oracle ESB .
Часть 3.
Источник: статья предоставлена авторами.
Данной статьей продолжается серия публикаций, в которых будет продемонстрированно – как, применяя продукт 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 ).
|