« Интеграционная шина

Пример создания и использования REST веб-сервиса

Создание веб-сервиса

Если необходимо получить данные из нескольких связанных таблиц, то для этого потребуется создать новый REST веб-сервис и написать скрипт для веб-сервиса с использованием подзапроса.

Для создания нового веб-сервиса необходимо:

1. В меню выбрать Шина -> REST веб-сервисы

2. Нажать кнопку Новый

3. При создании нового REST веб-сервиса нужно указать название

4. Написать скрипт, который будет выполняться при обращении к веб-сервису (воспользуйтесь примером)

5. Для начала работы пометить веб-сервис как активный

6. Для сохранения веб-сервиса нажать кнопку Сохранить

Для примера будет использовано две таблицы INDIVIDUAL и INDIVIDUAL_ADDRESS, схема данных представлена ниже

Пример скрипта с использованием подзапроса

Параметры для запроса будут необязательным

Запрос и подзапрос к таблицам будет выглядеть, как показано ниже. Основной запрос к таблице INDIVIDUAL и подзапрос к таблице INDIVIDUAL_ADDRESS. Количество подзапросов равно количеству найденных записей в основном запросе к таблице INDIVIDUAL. INDIVIDUAL_ID = :ID означает, что ID для подзапроса будет взят из основного запроса.

Способ формирования ответа REST веб-сервиса

Количество запросов и подзапросов равно количеству тэгов children. При формировании результата параметры из первого запроса для individual будут записаны в первый children, параметры подзапроса для таблицы INDIVIDUAL_ADDRESS пойдут во вложенный children. Пример ответа для запроса нужно написать следующим образом

Если хотим получить ответ в виде JSON, то к имени сервиса individual нужно добавить json.

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

Для получения ответа в виде XML к имени сервиса добавляется xml. По умолчанию ответ формируется в виде XML, если явно не указано в каком виде хотим получить ответ XML или JSON.

Ответ для такого запроса будет следующий:

Использование языка Apache Velocity

Язык Velocity можно использовать для изменения входных параметров запроса или для условного формирования запроса к базе данных.

Например, в базе данных фамилия, имя, отчество хранятся в верхнем регистре. При формировании запроса можно привести параметры запроса к верхнему регистру с помощью #set () и toUpperCase().

Если один из параметров запроса пустой, то можно использовать условные операторы #if … #end для исключения этого условия из запроса.

Ниже приведен пример использования операторов языка Apache Velocity для формирования запроса.

Использование файлов в качестве параметров скриптов и использование multipart-запросов

По аналогии с <params> добавляется <files>, где указывается имя файла, данные из которого могут использоваться в запросе, и <toolClassName> для разбора XML:

Содержимое файла Actions.xml:

Скрипт разбора xml-файла и добавление данных в таблицу в соответствии со структурой xml:

Пример multipart/form-data запроса для вызова созданного веб-сервиса:

Для более детального знакомства со всеми возможностями интеграционной шины Mediator ESB обращайтесь к нам. Мы организуем демонстрацию в удобное для вас время и в удобном формате.