(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Решение некоторых популярных задач обработки данных с помощью Oracle ESB . Часть 4.

Источник: Oracle
Bладимир Энгельс & Дмитрий Севостьянов, Oracle СНГ

Автор: Bладимир Энгельс & Дмитрий Севостьянов, Oracle СНГ

Данной статьей продолжается серия публикаций, в которых будет продемонстрированно - как, применяя продукт Oracle Enterprise Service Bus , можно реализовать наиболее популярные шаблоны проектирования. К статьям прилагается архив, где находятся заготовки проектов для реализации их в Oracle JDeveloper .

В четвертой статье рассматривается реализация шаблона c ontent enricher , который позволяет стандартными средствами Oracle ESB решить задачу обогащения потока данных.

Здесь хотелось бы сразу отметить отличие шаблона c ontent enricher от шаблона aggregator , которые часто смешиваются. По определению шаблон c ontent enricher используется, когда необходимо пополнить исходное сообщение недостающими данными, путем обращения в другие информационные системы. Шаблон же aggregator подразумевает формирование окончательного результата путем комбинирования содержимого из нескольких связанных сообщений, поступающих на вход, и по которыем необходимо синхронизироваться.

Постановка задачи.

Есть единственная очередь сообщений ( MoneyInputServiceFile ), куда помещаются входные сообщения в форме XML -документов вида ( Money ). Сообщения содержат неполную информацию. Требуется дозаполнить атрибуты сообщения, которые не были установлены ранее (атрибут longName объекта Currency ).

Входные сообщения описываются XSD -схемой Money.xsd , которая включает в себя схемы, описывающие разнородные объекты предметной области ( Currency . xsd )

Реализация.

Создание проекта Oracle ESB .

•  Создаем проект Scenario04-cnt_enrich в рабочей области ESB-samples типа ESB Project.

•  Поместим схемы, описывающие объекты предметной области в созданный проект ( Account . xsd , Address . xsd , Currency . xsd , Customer . xsd )

•  Создаем собственную "Систему", называем ее " ESB - samples "

Однако следует учесть, что система с подобным именем уже существует на сервере ESB . Для этого необходимо открыть файл "ESB_Samples.esbsys" любым текстовым редактором и заменить идентификатор системы, сгенерированный JDeveloper на уже существующий (из проекта Scenario 01- split )

•  Создаем собственную "Группу", называем ее "04 Scenario - content _ enricher "

•  Сохраните все изменения

Для облегчения отладки проекта, будем работать с файловыми адаптерами.

•  Создаем файловый адаптер с именем MoneyInput ServiceFile , относящийся к системе/группе ESB-samples.04Scenario- content _ enricher , принимающий входные сообщения. Адаптер конфигурируется кнопкой " Configure Adapter Service "

•  Соглашаемся с именем адаптера на первом шаге конфигурирования, выбираем тип операции "Read" на втором шаге конфигурирования

•  Задаем тип поиска каталога со входными сообщениями через логическое имя и даем логическому имени имя " sourcePath "

•  Выбираем шаблон поиска " File Wildcards " файла в каталоге, содержащем входные сообщения, и устанавливаем шаблон поиска " *. xml "

•  Устанавливаем частоту времени просмотра каталога и возраст создания файла в 1 секунду

•  Указываем схему, с которой будет работать наш файловый адаптер, нажав кнопку " Browse " (Схемы находятся в проекте, после шага 2 )

•  Конфигурирование файлового адаптера завершено

•  Вместе с файловым адаптером (на самом деле с любым адаптером, работающим на получение данных) создается сервис маршрутизации, именованный аналогично, но имеющий в качестве суффикса "_ RS ". Этот адаптер используется для приведения модели данных к внутрисистемной модели. В нашем случае мы будем использовать такую модель данных, которую предоставил нам адаптер.

•  Сохраните все изменения

Конфигурируем логические имена для файловых адаптеров. Откройте файловый адаптер MoneyInput ServiceFile и установите свойство логического имени каталога, в котором будет производиться поиск входных документов.

•  Создайте сервис маршрутизации " ContentEnricher ". В качестве входной схемы укажите элемент Money схему Currency .

•  Сохраните все изменения

•  Создайте правило маршрутизации для сервисов маршрутизации MoneyInputServiceFile и ContentEnricher

Укажите в качестве целевой системы операцию execute сервиса ContentEnricher

•  Создайте адаптер связи с базой данных " GetCurrencyServiceDB ".

Сконфигурируйте адапетер базы данных для работы с соединением, ранее определенным в JDeveloper .

В качестве операций, которые выполняет адаптер выберите запрос к таблице " Select "

Импортируйте список таблиц, с которыми будет оперировать адаптер, нажав кнопку " Import Tables "

Укажите таблицу " CURRENCY " (создание и заполнение таблицы выполняется скриптом currency .sql из проекта data - model ).

На седьмом шаге конфигурирования адаптера

добавьте параметр currency _ id , нажав на кнопку " Add …",

и измените SQL , добавив условие WHERE в SQL выражение, нажав кнопку " Edit …"

Результат должен выглядеть следующим образом

Конфигурирование адаптера завершено. Одновременно с создание WSDL описания адаптера будет создана и XML -схема, описывающая входные и выходные документы, с которыми работает адаптер ( GetCurrencyServiceDB. xsd ).

•  Сохраните все изменения.

•  Создайте новую схему данных, которой будет оперировать сервис маршрутизации, назначение которого обогащение данных.
Для этого создайте новую xsd схему, импортируйте в нее схему Currency и создайте новый тип ComplexMoneType , а на его основе новый элемент complexMoney .

Исходный XML -текст схемы приведен ниже

<?xml version="1.0" encoding="windows-1251" ?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns="http://www.oracle.com/data-model/complex-money"

targetNamespace="http://www.oracle.com/data-model/complex-money"

elementFormDefault="qualified"

xmlns:curr="http://www.oracle.com/data-model/currency">

<xsd:import schemaLocation="Currency.xsd"

namespace="http://www.oracle.com/data-model/currency"/>

<xsd:complexType name="ComplexMoneyType">

<xsd:sequence maxOccurs="2" minOccurs="2">

<xsd:element ref="curr:Money"/>

</xsd:sequence>

</xsd:complexType>

<xsd:element name="complexMoney" type="ComplexMoneyType">

<xsd:annotation>

<xsd:documentation>

A sample element

</xsd:documentation>

</xsd:annotation>

</xsd:element>

</xsd:schema>

•  Создайте сервис маршрутизации " GetCurrencyService ".

В качестве схемы входной данных укажите элемент Money схемы Currency .

В качестве выходной схемы данных кажите элемент complexMoney схемы enrichment .

Создайте правило маршрутизации для сервиса маршрутизации GetCurrencyService , в качестве целевой системы укажите операцию " GetCurrencyServiceDBSelect_currency_id " адаптера GetCurrencyServiceDB .

Для успешной работы адаптера базы данных необходимо установить параметр " currency _ id " запроса. Этот атрибут присутствует во входном XML -документе в качестве элемента currencyId элемента Currency . Для присваивания значения атрибута параметру необходимо создать XSL -шаблон, выделяющии значение необходимого элемента входного документа и присваивающий его значение параметру запроса. Создается файл XSL -шаблона с помощью нажатия кнопки XSL -трансформации .

Соедините элемент inp 1: currencyId с элементом top : currency _ id .

Создайте XSL -шаблон приведения схемы данных ответа адаптера к канонической схеме данных проекта.

Визуальное представление показано ниже.

Итоговое правило маршрутизации должно выглядеть следующим образом:

•  Создайте сервис маршрутизации MoneyOutputRoutingService , назначение которого преобразование объекта complexMoney к объекту Money .

В качестве входной схемы данных укажите элемент complexMoney схемы enrichment . В качестве выходной схемы данных укажите элемент Money схемы Currency .

Создайте файловый адаптер MoneyOutputServiceFile для сохранения выходного XML -документа.

Сконфигурируйте адаптер.

В качестве выходной схемы данных укажите элемент Money схемы Currency .

Конфигурирование адаптера завершено.

Установите свойство outputPath для адаптера MoneyOutputServiceFile .

•  Создайте правило маршрутизации для сервиса MoneyOutputRoutingService , в качестве целевой системы укажите операцию Write адаптера MoneyOutputServiceFile .

•  Создайте XSL -шаблон преобразования данных объединения двух объектов complexMoney в один объект Money . Обратите внимание на формирование элемента longName .

•  Создайте правило маршрутизации ответа от сервиса GetCurrencyService

•  Создайте XSL -шаблон преобразования ответа от сервиса GetCurrencyService в объект comlexMoney для сервиса ContentEnricherRS . Обратите внимание на то, что в шаблоне присутсвует описание переменной ESBREQUEST .

В редакторе исходного кода добавьте строчку < xsl : copy - of select ="$ ESBREQUEST " /> . Эта строка помещает в XML-документ содержимое запроса, уходящего в сервис GetCurrencyService .

•  Сохраните все изменения.

•  Результирующая картинка проекта должна иметь следующий вид. Обратите внимание на то, что в сервисе ContentEnricher есть только одно XSL -преобразование.

•  Разверните проект на сервере.

Итог.

В результате мы получили развернытый на сервере проект, реализующий шаблон c ontent enricher .

Данная статья завершает серию публикаций, в которых было продемонстрированно - как, применяя продукт Oracle Enterprise Service Bus , можно реализовать наиболее популярные шаблоны проектирования.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 06.03.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus License
NERO 2016 Classic ESD. Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые программы для Windows
Новости мира 3D-ускорителей
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100