Работа в Oracle ESB

Автор: Пользователь скрыл имя, 14 Декабря 2012 в 19:08, практическая работа

Описание работы

В Oracle ESB имеются ключевые возможности, которые делают эту архитектуру подходящей для подобной задачи. Во-первых, в ней можно получать сообщения (уведомления о событиях) различными способами: через JMS, через вызовы Web-сервисов, из файловой системы или из таблицы базы данных, и так далее. Она может также извлекать сообщение, содержащее связанные с событием данные, и преобразовать его, обычно превращая его в более общую, каноническую модель для предприятия.

Работа содержит 1 файл

Практическая часть.docx

— 2.38 Мб (Скачать)

На шаге 3 вам  будет предложено указать каталог  вывода и соглашение об именовании для файлов, которые будут записаны сервисом. Пока остановитесь на простейшем подходе и укажите жестко запрограммированный  каталог - правда, это не лучший способ обеспечить переносимость вашего сервиса. При определении имени файла  может быть использовано несколько  динамических элементов, типа даты или  даты и времени создания сообщения  или последовательности, но только по одному за раз.

 

 

На шаге 4 укажите  выходной формат для файла: как должна быть структурирована информация? Так  как вы желаете записать файл CSV, кликните по кнопке Define Schema for native format.

В результате вы попадете в Native Format Builder (блок построения "родного" формата), где вы сможете создать XSD, который File Adapter сможет, в свою очередь, использовать для создания файла CSV по введенным в него данным XML. Используйте демонстрационный файл CSV, любезно переданный вам клубом младших менеджеров.

Примите значения по умолчанию и кликните по кнопке Next.

На следующей  странице введите имя и местоположение демонстрационного файла или  определите их с помощью кнопки Browse. Затем кликните по Next.

Примите значения по умолчанию со страницы 3. Кликните по Next.

Введите имена  элементов, содержащих несколько записей  и представляющих единственную запись. Например, используйте NewJuniorManagers и NewJuniorManager. Заметьте: они будут представлены при создании отображения для этого файлового сервиса; они не будут присутствовать в файлах, которые записаны.

На странице 5 примите значения по умолчанию. Кликните по Next.

На странице 6 проверьте флажок "Use the first record as the field names". К тому же, это сделает XSD более удобочитаемым - так как не затрагиваются файлы, записанные этим сервисом.

На следующей  странице дается краткий обзор файла XSD, созданного мастером для использования  с File Adapter. Вы можете ознакомиться с ним. После знакомства примите файл, кликнув по Next.

Вы попали на последнюю страницу мастера Native Format Builder. Кликните по кнопке Finish.

Мы возвращаемся в мастер File Adapter Configuration Wizard. Кликните по кнопке Next.

После этого  кликните по кнопке Finish. Вы возвратитесь во всплывающее окно сервиса создания адаптеров файла (Create File Adapter Service). Еще раз кликните по кнопке Finish.

Диаграмма ESB для  сервиса NewEmployeeEventService расширяется за счет добавления сервиса SendNewEmployeeFileToJuniorManagersClub.

Дважды кликните по иконке NewEmployeesRS, чтобы определить правило маршрутизации, которое передаст сообщение NewEmployeeEvent в этот целевой сервис.

Чтобы создать  новое правило маршрутизации, нажмите  на зеленый знак "плюс". Будет  открыт диалог Browse Target Service. Здесь вы можете выбрать сервис, в который правило маршрутизации передаст сообщение.

Выберите в  элементе SendNewEmployeeFileToJuniorManagersClub операцию записи (Write) и кликните по OK.

Добавьте состоящее  из двух частей выражение фильтра. В  одной части должно быть сказано, что возраст нового нанимаемого  не должен превышать 40 лет, а в другой - что его роль относится к числу  руководящих. Так выглядит полное выражение, которое вы должны ввести:

/inp1:newEmployeeEvent/inp1:age < 40 and contains('MANAGER,PRESIDENT,

VICE PRESIDENT,TECHNOLOGY MANAGER,CFO,CHIEF,SUPERVISOR',/inp1:newEmployeeEvent/inp1:role)

Теперь вы должны указать, как преобразовать полученное из отдела кадров сообщение, чтобы передать его в целевой сервис.

Кликните по иконке отображения. Выберите опцию Create New Mapper File в диалоге.

Кликните по OK. Вы попадаете в инструментальное средство Mapper (картопостроитель). Здесь требуется подключить два документа XSD, которые определяют XSLT для преобразования из исходного XSD в целевой объект.

Сначала перетащим  элемент newEmployeeEvent на вершину NewJuniorManager, чтобы создать простые, очевидные отображения.

Снимите флажок Match Elements Considering their Ancestor Names.

Итак, теперь у  вас имеется первая сборка отображения:

Элемент роли еще не отображен в область  Position, и вы знаете, что имеются специальные требования к формату даты для поля FirstDay.

Перетащите role в position. Затем перетащите format-dateTime Date Function из палитры компонентов на вершине подключения из firstDayAtWorkDate в firstDay.

Теперь дважды кликните по функциональному элементу, чтобы точно указать, как именно должно быть сделано преобразование:

Затем, давайте  попытаемся разрешить конкретные потребности  доставки сообщения для финансового  отдела.

Финансовый отдел. Вспомните, что финансовый отдел хочет, чтобы вы непосредственно вставили новую запись в таблицу базы данных. Эту таблицу можно найти в отделе FINANCE (ФИНАНСЫ) одной из корпоративных баз данных:

SQL> desc employees

Name                          Null?            Type

----------------------------  ---------------  ----------------------

NAME                          NOT NULL         VARCHAR2(50)

GENDER                                         VARCHAR2(1)

JOB_TITLE                                      VARCHAR2(50)

 START_DATE                                     DATE

Для этого целевого объекта необходимо создать новый  сервис адаптера. Используя Database Adapter, установите Target Adapter (целевой сервис) для NewEmployeeEventRS. Из раздела Adapter Service в палитре компонентов перетащимDatabase Adapter в документ esb. На экране появится следующее окно.

Введите имя  сервиса адаптера (Adapter Service) и кликните по первой иконке после поля WSDL File, чтобы сконфигурировать адаптер базы данных.

Создайте New Database Connection для подключения к схеме FINANCE в корпоративной базе данных. (Примечание: Создайте подключение к схеме базы данных, в которой во время "Исходной настройки" была создана таблица EMPLOYEES.):

Определите  имя подключения:

Затем введите  имя пользователя и пароль для  схемы FINANCE:

Кликните по кнопке Next, чтобы ввести дополнительные детали подключения:

На этом шаге вы должны указать детали URL JDBC, например, имена хоста, порта и SID базы данных. Когда это будет сделано, кликните покнопке Next, чтобы проверить подключение.

Если проверка прошла успешно, кликните по Finish. В противном случае, исправьте ошибочные детали.

Вы возвратитесь в мастер Database Adapter Configuration Wizard. Кликните по Next.

Выберите операцию, которую хотели бы поручить этому  сервису: вставка новых записей.

Кликните по Next. Вы перейдете на страницу выбора таблицы (Select Table). Кликните по Import Tables (импорт таблиц), чтобы выбрать в базе данных Finance таблицу EMPLOYEES.

Кликните по Import Tables. Нажмите кнопку Query. Будет показан список всех таблиц в схеме FINANCE. Выберите таблицу EMPLOYEES и кликните по OK.

Когда страница мастера Select Table будет показана еще раз, кликните по Finish.

Вы возвратитесь в сервис Create Database Adapter; кликните по OK.

Теперь вернемся назад в диаграмму esb:

Подключите  этот целевой сервис к NewEmployeeEventRS. Дважды кликните по иконке для Router Service.

Чтобы добавить правило маршрутизации, нажмите  на зеленый знак "плюс":

В сервисе InformFinanceDepartmentOfNewEmployeeEvent выберите операцию Event и кликните по OK.

Кликните по иконке Mapping, чтобы определить отображение из входящего события NewEmployeeEvent в целевой сервис.

Выберите Create New Mapper File и кликните по OK.

Перетащите элемент события newEmployeeEvent в элемент top:Employees.

Снимите флажок Match Elements considering their ancestors.

Автоотображение дает вам первый шаг преобразования:

Вы должны вручную  отобразить role на jobTitle и firstDayAtWorkDate на startDate. Для этого потребуется только перетащить элементы Source в элементы Target.

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

Кликните по иконке Save All. Вы близки к завершению: две из трех заинтересованных сторон уже связаны с событием NewEmployeeEvent.

Отдел безопасности. Служба безопасности должна опубликовать Web-сервис, который необходимо вызывать в случае события New Employee. За этим Web-сервисом скрывается процесс BPEL, который запускает Human Workflow (в настоящий момент это - единственная вещь, которую делает этот процесс).

В сервисе ESB вы должны создать другой сервис адаптера, который вызывает этот процесс BPEL, а  затем связать его с Router Service.

Из палитры  компонентов сервиса ESB перетащите элемент SOAP Service и опустите его в диаграмму ESB.

Появится всплывающее  окно диалога Create Soap Invocation Service. Введите имя этого сервиса, например, NotifySecurityWebService. Затем кликните по иконке Service Explorer.

Выберите сервис SecurityProcessingNewEmployee (который к этому времени уже развернут на экземпляре BPEL PM).

Кликните по OK.

И еще раз  на OK.

Дважды кликните на Router Service. Подключив сервис Soap Invocation Service к Router Service, вы собираетесь добавить новое правило маршрутизации.

Кликните по зеленому знаку "плюс", чтобы добавить новое правило маршрутизации.

Выберите операцию инициализации в целевом сервисе  NotifySecurityWebService.

Кликните по OK.

Кликните по иконке Mapping.

Выберите Create New Mapper File и кликните по OK.

Отобразите событие newEmployeeEvent сервиса RouterService на сообщение SecurityProcessingNewEmployeeEventRequest.

Сохраните все.

Сервис ESB выглядит следующим образом:

Глава 2. Построение управляемой событиями архитектуры с помощью корпоративной сервисной шины

Немного истории

           В Oracle ESB имеются ключевые возможности, которые делают эту архитектуру подходящей для подобной задачи. Во-первых, в ней можно получать сообщения (уведомления о событиях) различными способами: через JMS, через вызовы Web-сервисов, из файловой системы или из таблицы базы данных, и так далее. Она может также извлекать сообщение, содержащее связанные с событием данные, и преобразовать его, обычно превращая его в более общую, каноническую модель для предприятия.

          ESB может также превратить крупномасштабное сообщение о событии в несколько более детализированных сообщений. Например, она может создать событие New Customer (новый заказчик) или событие New Order (новый заказ) из сообщения, полученного из основанной на Web-технологиях системы обработки заказов потребителей, когда новый заказчик регистрируется и размещает свой первый заказ. В процессе преобразования первоначального сообщения в одно или несколько канонических (возможно, более специализированных) сообщений, ESB может также обогатить содержимое сообщения, например, добавляя к нему информацию о текущей дате и отметке времени, или добавляя информацию, полученную из эталонных источников справочной информации, которая, вероятно, будет востребована многими потребителями события.

         И, наконец, на основании характеристик события (содержимое сообщения), ESB может предоставить преобразованные обогащенные сообщения различным каналам вывода, типа Web-сервисов, JMS, процедур или таблиц базы данных, файлов и электронной почты.

(Примечание: превосходным  примером генератора отчетов  о событии является процесс  BPEL. Когда процесс BPEL выполняется, может иметься несколько стадий и ситуаций, на которых события могут быть опубликованы, обычно, в форме вызова в ESB Web-сервиса.)

         Есть несколько подходов, призванных помочь заинтересованным в событиях сторонам потреблять сообщения от ESB:

  • ESB может поставлять все сообщения в темы JMS, и каждая заинтересованная сторона будет должна разбираться для себя, как добираться до сообщений и как преобразовать их в соответствующие собственным требованиям форматы.
  • Каждая система, желающая узнать о сообщении, может быть вызвана непосредственно из ESB, из того же самого сервиса, который получил событие от его создателя и, возможно, преобразовал сообщение о нем в канонический формат. Это, конечно, означает, что сервис ESB должен быть расширен при каждом очередном добавлении заинтересованной стороны и, возможно, для каждой дополнительной стороны он должен содержать дополнительные преобразования и правила фильтрования.
  • Для получения события, его преобразования и обогащения, а также для публикации этого события в JMS, в ESB имеется единый сервис, а также по одному выделенному сервису для каждой заинтересованной стороны. Этот выделенный сервис получит сообщение о событии непосредственно из сервиса получения (соединенное) или прочтет сообщение (несвязанное) из JMS; выполнит дополнительное, специализированное преобразование для стороны, которую он обслуживает; и доставит это сообщение любыми средствами - используя JMS, вызов WebService, манипулирование базами данных - которые подходят получателю сообщения. В этом сценарии, при добавлении новой стороны, заинтересованной в событии (сообщении), в ESB создается новый, независимый и слабосвязанный сервис. Однако, это приводит к появлению некоторых накладных расходов - более конкретно, много дополнительных определений сервисов, а также экземпляров сервисов - и они будут копировать через внешнюю тему JMS то, что ESB в большей или меньшей степени делает внутренним образом.

         В большинстве ситуаций второй подход, вероятно, является лучшим. Нужно отметить, что целевые сервисы, вызываемые из экземпляра сервиса ESB для уведомления каждой из заинтересованных сторон, могут вызваться параллельно или последовательно, в зависимости от того, что является более соответствующим.

Информация о работе Работа в Oracle ESB