четверг, 7 июля 2011 г.

Построение композитного сервиса с помощью Oracle Service Bus


В состав Oracle Service Bus входит очень мощное средство управления последовательностью вызовов сервисов, которое называется Split-Join. Данный компонент позволяет разделить входное сообщение на части (паттерн Splitter, здесь и далее будут упоминаться паттерны из каталога EAI), пропустить данные части через разные маршруты обработки, а затем агрегировать результаты (паттерн Agregator). Сервис, агрегирующий результаты вызовов других сервисов называется композитным.

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

среда, 6 июля 2011 г.

Трансформация сообщений в Oracle Service Bus с использованием XSLT и XQuery


Продолжаем знакомство с потоком обработки сообщений (Message Flow) Oracle Service Bus (OSB). Сегодня мы рассмотрим как настроить трансформацию сообщений из одного XML-формата в другой перед вызовом Business Service, используя XQuery- и XSLТ-преобразования. Разовьем пример, начатый в предыдущей заметке.

Динамическая маршрутизация в Oracle Service Bus


В Oracle Service Bus (OSB) используются следующие концепции:

  • Business Service осуществляет связь между тем сервисом, который необходимо вызвать, и шиной;

  • Proxy Service осуществляет связь между клиентом и шиной;

  • Message Flow поток обработки сообщений, осуществляет связь между Proxy Service и одним или несколькими Business Service. Поток обработки сообщений может быть довольно сложным и включать в себя маршрутизацию, трансформацию, параллельное исполнение и другие действия. Физически Message Flow описывается в Proxy Service.





Сегодня мы рассмотрим как настроить такое действие потока обработки сообщений, как динамическая маршрутизация. Под динамической маршрутизацией в OSB понимается маршрутизация, основанная на содержимом сообщения - т.н. Content-based Routing. Данный тип маршрутизации является альтернативой т.н. статической маршрутизации - типу маршрутизации, при котором маршрут сообщения задается на этапе разработки.