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 ).

E-mail this page