среда, 29 июня 2011 г.

Транзакционное чтение из JMS-очереди в Oracle SOA Suite


Одним из наиболее применяемых паттернов интеграции информационных систем является паттерн "Фильтры и трубы". При построении интеграционного решения на Oracle SOA Suite в качестве "фильтров" выступают композиты, а в качестве "труб" удобно использовать JMS-очереди.

Зачастую необходимо реализовать не просто считывание сообщения из "трубы", а считывание и обработку сообщения в рамках одной транзакции, при этом при откате данной транзакции сообщение должно возвращаться в очередь, из которой было считано. В данной заметке мы рассмотрим как добиться такого поведения, а так же какие существуют ограничения, накладываемые Oracle SOA Suite'ом на реализацию транзакционного чтения из JMS.

суббота, 25 июня 2011 г.

К вопросам обработки XML-сообщений в Oracle SOA Suite


Одним из вариантов интеграции информационных систем является построение среды обмена сообщениями между данными системами. Так сложилось, что стандартом де-факто для представления сообщений является XML и его многочисленные подмножества. При передаче сообщений между системами зачастую приходится их определенным образом трансформировать - преобразовывать из одних XML-форматов в другие. Такая трансформация может осуществляться различными способами, самыми популярными из которых является применение XSLT, а так же активности Assign в BPEL.

Зачастую перед непосредственно трансформацией сообщения необходимо произвести его разбор: преобразовать из строки в объект, описывающий XML-документ. В Oracle SOA Suite для такого преобразования служит функция oraext:parseXML. Данная функция возвращает объект, который можно присвоить BPEL-переменной.

Здесь и начинаются сложности. Дело в том, что любая BPEL-переменная должна иметь тип. Тип переменной за исключением т.н. простых типов (строка, число, логическое значение) определяется XML-схемой. В дальнейшем все манипуляции с переменной описываются с помощью XPath-выражений, которые в среде разработки (JDeveloper) строятся так же на основании типа переменной, т.е. в конечном итоге - на основании схемы. В связи с этим хочется рассмотреть два вопроса:

1. Что произойдет, если на вход функции oraext:parseXML подать строку, представляющую собой XML, не соответствующий схеме.

2. Как влияют определения пространств имен на соответствие XML-документа схеме.

пятница, 24 июня 2011 г.

Eclipse Indigo: Пять причин обратить внимание на ECF


Поздравляю всех читателей с официальным выходом Eclipse 3.7 Indigo. Здесь камрад James Sugrue написал статью на JavaLobby - Eclipse Indigo Highlights: Five Reasons to Check Out ECF. Позволю себе перевести ее на русский язык.

Eclipse Communication Framework [1] - традиционный участник Eclipse release trains (перевод "поездов релизов Eclipse" мне как-то не очень нравится, однако термин "поезд" применительно к релизу ПО меня забавляет уже третий год) - непрерывно добавляет новое в свой впечатляющий список возможностей. Данный год не стал исключением - в релиз Eclipse Indigo включен ECF 3.5. В данной статье я сосредоточусь на пяти ключевых возможностях новой версии.

четверг, 9 июня 2011 г.

Используем технологические адаптеры в Oracle Service Bus


В поставку Oracle Service Bus (OSB) и Oracle SOA Suite входит довольно широкий набор так называемых технологических адаптеров: к СУБД, к файлам, к http-серверам, к веб-серисам, к JMS-, AQ- и MQ-очередям и т.д. С помощью данных адаптеров можно использовать, например, СУБД, как веб-сервис, при этом будет обеспечена поддержка транзакций и прочих аспектов взаимодействия.

В данной заметке я хочу показать, что использовать технологические адаптеры в OSB не сложнее чем в Oracle SOA Suite. В качестве примера рассмотрим файловый адаптер.

пятница, 3 июня 2011 г.

Создаем Hello World на Oracle Service Bus с использованием Oracle Enteprise Pack for Eclipse


В данной заметке Суровый челябинский программист расскажет о том, как создать простой сервис на Oracle SOA Suite и обеспечить взаимодействие с данным сервисом с помощью сервисной шины предприятия Oracle Service Bus (OSB). При этом, для создания проекта OSB будет использоваться интегрированная среда разработки Eclipse с комплектом расширений под названием Oracle Enterprise Pack for Eclipse (OEPE). Для создания же сервиса будет использоваться основная интегрированная среда разработки от Oracle - JDeveloper.

Предполагается, что у читателя уже установлены WebLogic, Oracle Service Bus, Oracle SOA Suite, JDeveloper и OEPE. Я использовал OSB и SOA Suite версии 11.1.1.5, но, думаю, что работа с ранними версиями в целом аналогична.