Введение в интеграцию данных в режиме реального времени и WebSphere DataStage
RTI, компонент IBM WebSphere DataStage (здесь и далее - DataStage), позволяет создавать стандартные сервисы с совместным доступом, включая Web-сервисы. Эти сервисы, которые представляют функциональность интеграции данных DataStage-заданий, можно активизировать, не разбираясь в деталях логики интеграции данных. Развертывание DataStage-задания в виде сервисов с совместным доступом обеспечивает много преимуществ, в том числе:
- Предоставление одноточечного стандартного доступа к различным источникам данных, внутренним и внешним.
- Повторное использование логики DataStage-заданий в режиме реального времени.
- Более быстрая разработка приложений путем обеспечения унифицированных сервисов для каждого приложения, что существенно уменьшает объем избыточного кода.
На рисунке 1 показана архитектура RTI.
Рисунок 1. Архитектура RTI
В данной статье показывается, как развернуть RTI-задания в виде Web-сервисов. Материал разбит на следующие разделы:
- Введение в топологии RTI-заданий.
- Пошаговая разработка компонента интеграции данных с использованием DataStage.
- Публикация компонента интеграции данных в виде Web-сервиса.
- Разработка Java-клиента для вызова опубликованного Web-сервиса.
RTI-сервер поддерживает три топологии заданий:
- Топология I. Пакетные задания.
- Топология II. Пакетные задания с этапом RTI-выхода.
- Топология III. Полностью RTI-совместимые задания.
Топология I использует новые или существующие пакетные задания, которые представляются как RTI-сервисы (обратите внимание на то, что данная топология не содержит никаких RTI-этапов, таких как этап RTI-входа или этап RTI-выхода, которые рассматриваются в следующих разделах). RTI-сервис, основанный на пакетном задании, может принять параметры задания как входные аргументы. Такой тип сервиса не возвращает выходных данных. При конфигурировании развертывания можно настроить значения параметров задания. На рисунке 2 приведен пример такой топологии.
Рисунок 2. Пакетное задание
Топология II. Пакетные задания с этапом RTI-выхода
Единственным отличием от топологии I является наличие в топологии II этапа RTI-выхода. Этап RTI-выхода является точкой выхода из задания; он возвращает одну или более строк клиентскому приложению как ответ сервиса. Этап RTI-выхода поддерживает одну входящую ссылку. Его определение таблицы отображается на выходные аргументы RTI-сервиса. Пример данной топологии приведен на рисунке 3.
Рисунок 3. Пакетные задания с этапом RTI-выхода
Топология III. Полностью RTI-совместимые задания
В топологии III задания используют оба этапа - RTI-вход и RTI-выход. Этап RTI-входа является точкой входа в задание, принимающей одну или более строк при запросе сервиса. Этап RTI-выхода поддерживает одну исходящую ссылку. Его определение таблицы отображается на входные аргументы RTI-сервиса, например, входные аргументы операции Web-сервиса. Задание, выполненное по топологии III, всегда активно. После развертывания этого задания в виде Web-сервиса выполняющийся экземпляр задания находится в DataStage Director. На рисунке 4 приведен пример данной топологии.
Рисунок 4. Полностью RTI-совместимые задания
Разработка примера RTI-задания
Давайте создадим пример RTI-задания для извлечения информации о месторасположении из таблицы базы данных. Используем параметр employeeid, структурированный в виде массива, что позволяет передавать несколько значений одновременно. Задание возвращает информацию о месторасположении сотрудников, указанных входным параметром. Это RTI-задание использует таблицу RFIDLOCATION (определение таблицы приведено в таблице 1), которая хранится в базе данных IBM DB2® под названием GBPMDB. Определение таблицы этапа RTI-входа и этапа RTI-выхода показано в таблицах 2 и 3 соответственно. Обратите внимание на то, что все столбцы таблиц 2 и 3 включены в таблицу 1. Поэтому при импортировании определения таблицы с использованием DataStage Designer можно получить определения таблиц 2 и 3 из определения таблицы 1.
Таблица 1. Определение таблицы RFIDLOCATION
| Название столбца | Ключ | Тип | Длина | Может ли иметь значение Null |
|---|---|---|---|---|
| RFIDRecordLocationID | Да | Integer | 10 | Нет |
| EmployeeID | Нет | Varchar | 60 | Нет |
| LocationID | Нет | Integer | 10 | Нет |
| RecordTime | Нет | Timestamp | 26 | Нет |
Таблица 2. Определение таблицы этапа RTI-входа
| Название столбца | Ключ | Тип | Длина | Может ли иметь значение Null |
|---|---|---|---|---|
| EmployeeID | Нет | Varchar | 60 | Нет |
Таблица 3. Определение таблицы этапа RTI-выхода LocationInfo
| Название столбца | Ключ | Тип | Длина | Может ли иметь значение Null |
|---|---|---|---|---|
| EmployeeID | Нет | Varchar | 60 | Нет |
| LocationID | Нет | Integer | 10 | Нет |
| RecordTime | Нет | Timestamp | 26 | Нет |
Импортирование определения таблицы с использованием DataStage Designer
- В репозитории DataStage Designer щелкните правой кнопкой мыши на Table Definitions, а затем выберите Import > Plug-in Meta Data Definitions.
- Выберите DSDB2 в столбце Name и нажмите кнопку OK.
- В следующем окне (см. рисунок 5) выберите имя сервера в ниспадающем списке (в данном случае GBPMDB). Именем сервера является имя созданной вами базы данных, содержащей таблицу, которую нужно импортировать.
- Введите имя пользователя
db2inst1и парольpassw0rd, для подключения к серверу. - Отметьте флажок Tables и нажмите кнопку Next.
Рисунок 5. Выбор базы данных
- Теперь выберите таблицу RFIDLOCATION в списке Select Table(s) и нажмите кнопку Import для импортирования определения таблицы RFIDLOCATION.
Вы должны увидеть определения таблицы, которые только что импортировали, в подгатегории DSDB2 репозитория DataStage Designer, как показано на рисунке 6.
Рисунок 6. Определение таблицы
Создание параллельного задания
- Теперь создайте новое параллельное задание в DataStage Designer (схема этого задания показана на рисунке 7). Данное задание содержит один этап DB2/API UDB, один этап RTI-входа, один этап RTI-выхода и один этап соединения (join) - все четыре соединены этапами ссылок.
Рисунок 7. Схема задания
- Сохраните это новое задание как sampleRTI.
Конфигурирование свойств задания
- Щелкните левой кнопкой мыши на пиктограмме Job Properties в DataStage Designer, чтобы открыть окно Job Properties (см. рисунок 8).
- В закладке General отметьте флажки Allow Multiple Instance и RTI Service Enabled.
- Нажмите кнопку OK и сохраните конфигурацию.
Рисунок 8. Конфигурирование свойств задания
Конфигурирование этапа DB2/UDB
- Выполните двойной щелчок левой кнопкой мыши на этапе DB2/UDB API RFIDLOCATION, чтобы открыть окно, показанное на рисунке 9.
Рисунок 9. Конфигурирование информации о подключении к базе данных
- В этом окне укажите имя сервера (имя базы данных, к которой хотите подключиться), в данном случае
GBPMDB. - Введите ID пользователя
db2inst1и парольpassw0rd. Оставьте остальные параметры в значениях по умолчанию. - Перейдите в закладку Output в верхней части окна.
- В закладке General страницы Output (см. рисунок 10) введите
RFIDLOCATIONв поле Table names и выберите Generated SQL query в ниспадающем списке Query type. - Оставьте остальные настройки в значениях по умолчанию и перейдите в закладку Columns.
Рисунок 10. Конфигурирование информации о таблице
- В закладке Columns нажмите кнопку Load для загрузки определения таблицы. Откроется окно, в котором можно выбрать определение таблицы в репозитории.
- Выберите RTILOCATION в подкатегории DSDB2 и нажмите кнопку OK.
- Теперь выберите столбцы, показанные на рисунке 11, и нажмите кнопку OK.
Рисунок 11. Выбор столбцов
- Вы увидите результаты, показанные на рисунке 12. Нажмите кнопку OK и сохраните задание.
Рисунок 12. Импорт результатов
Конфигурирование этапа RTI-входа Employeeid
- Выполните двойной щелчок левой кнопкой мыши на этапе RTI-входа Employeeid и выберите закладку Columns на странице Output.
- Отсюда загрузите определение таблицы (загрузка определения таблицы для этапа RTI-входа Employeeid аналогична описанной в разделе "Конфигурирование этапа DB2/UDB").
- После загрузки определения таблицы нажмите кнопку OK и сохраните задание.
Конфигурирование этапа RTI-выхода LocationInfo
- Выполните двойной щелчок левой кнопкой мыши на этапе RTI-выхода LocationInfo и перейдите в закладку Columns страницы Input.
- Загрузите определение таблицы (загрузка определения таблицы для этапа RTI-выхода LocationInfo аналогична описанной в разделе "Конфигурирование этапа DB2/UDB").
- После загрузки определения таблицы нажмите кнопку OK и сохраните задание.
Конфигурирование этапа соединения JoinByEmployeeid
- Выполните двойной щелчок левой кнопкой мыши на JoinByEmployeeid для его настройки.
- Перейдите в закладку Properties страницы Stage, затем выберите EMPLOYEEID в качестве ключа соединения и Inner в качестве типа соединения, как показано на рисунке 13.
Рисунок 13. Конфигурирование этапа соединения
- Теперь перейдите в закладку Output. Вы увидите, что DataStage сгенерировал отображающее отношение между источником и назначением. Оставьте значения по умолчанию и нажмите кнопку OK.
Щелкните левой кнопкой мыши на пиктограмме Compile в DataStage Designer. Откроется окно Compile Job с сообщением Job successfully compiled, если во время этого процесса не возникло каких-либо ошибок. Задание готово к развертыванию.
Развертывание RTI-задания sampleRTI в виде Web-сервиса
В оставшейся части данной статьи описывается, как развернуть RTI-задание, используя RTI-консоль.
- В панели Current Tasks откройте RTI-консоль и нажмите кнопку Register an RTI Server. При этом откроется мастер RTI Server Wizard, как показано на рисунке 14.
- В поле RTI Server Name введите имя машины RTI-сервера. Номер порта может быть другим в зависимости от сервера приложений, на котором выполняется ваш RTI-сервер. Например, если сервером приложений является IBM WebSphere Application Server, номер порта равен 9080.
- Сохраните значения по умолчанию для остальных полей и нажмите кнопку Finish.
Рисунок 14. Настройка RTI-сервера
- Только что зарегистрированный RTI-сервер отображается в виде пиктограммы в правой панели. Выполните двойной щелчок левой кнопкой мыши на этой пиктограмме.
- В панели Current Tasks нажмите кнопку Register a DataStage Machine, чтобы открыть мастер DataStage Machine Registration Wizard (см. рисунок 15).
- В поле Machine name введите имя машины, на которой работает сервер DataStage или хост DataStage TX.
- Для сервера DataStage введите корректную информацию о полномочиях в полях User и Password. Портом прослушивания по умолчанию для RTI Agent является 2000. Если ваш администратор DataStage изменил этот порт, выполните следующие действия:
- Нажмите кнопку User-defined port.
- Введите новый номер порта.
- Нажмите кнопку Finish.
Рисунок 15. Настройка сервера DataStage
- В панели Current Tasks нажмите Add a New Service to the RTI Server, чтобы открыть мастер RTI Service Wizard.
- В поле Service name ведите имя нового сервиса, затем нажмите кнопку Finish.
- Только что созданный вами сервис отображается в виде пиктограммы в правой панели. Выполните двойной щелчок левой кнопкой мыши на этой пиктограмме sampleRTI.
- В панели Current Tasks нажмите Add Support for Service Bindings, чтобы открыть мастер Add Support for Service Bindings Wizard.
- Выберите Soap over HTTP в списке правой панели, затем нажмите кнопку Next.
- В поле Additional binding-specific description при желании введите описание связывания, которое добавляется к WSDL (Web Services Description Language).
- В списке Style выберите стиль кодирования для SOAP-сообщений. Выбор зависит от того, что принимает клиентское приложение.
- Нажмите кнопку Finish. В панели Results появится пиктограмма связывания.
- В панели Current Tasks выберите Add an Operation, чтобы открыть мастер New Operation Wizard, как показано на рисунке 16. Вы увидите список зарегистрированных машин DataStage Server и DataStage TX, представленных узлами.
- Выберите задание sampleRTI, которое вы только что создали, затем нажмите кнопку Next.
Рисунок 16. Выбор RTI-задания
- В поле Operation Name при необходимости измените имя. По умолчанию используется имя задания или отображения.
- В поле Queue Size укажите размер очереди операций в виде количества запросов сервисов. Если этот размер превышается, запрос отклоняется. По умолчанию указано три запроса.
- В поле Wait delay укажите максимальное время ожидания в миллисекундах. Если это время превышается, запрос отклоняется. Значением по умолчанию является 100 миллисекунд.
- Нажмите кнопку Next.
- Раскройте список Options и выберите Array (см. рисунок 17). Задания, принимающие или требующие указания нескольких строк в одном запросе, должны иметь входные аргументы, оформленные как массивы. В данном случае мы развертываем задание в виде Web-сервиса, принимающего несколько строк в одном запросе, поэтому вы должны выбрать Array в списке Options.
Рисунок 17. Создание новой операции
- RTI-задание возвращает несколько строк в одном запросе, поэтому снова выберите Array в списке Options.
- Нажмите кнопку Next.
- Должно открыться окно New Operation Wizard - Messages Summary, как показано на рисунке 18. В поле Service Request and Response Messages проверьте входные и выходные аргументы для операции и нажмите кнопку Finish.
Рисунок 18. Проверка входных и выходных аргументов
Теперь настроим параметры времени исполнения.
- В поле Minimum введите минимальное количество экземпляров задания, которые могут выполняться одновременно.
- В поле Maximum введите максимальное количество экземпляров задания, которые могут выполняться одновременно. По умолчанию указывается значение 5, максимальное значение - 500.
- Оставьте остальные поля в значениях по умолчанию и нажмите кнопку Next.
- В следующем окне замените (при необходимости) информацию о полномочиях пользователя по умолчанию, затем нажмите кнопку Finish.
- После открытия окна Operation Created нажмите кнопку OK.
- Щелкните правой кнопкой мыши на пиктограмме связывания в правой панели и выберите Activate, как показано на рисунке 19.
Рисунок 19. Активация связывания
- Выполните двойной щелчок левой кнопкой мыши на созданной операции. В правой панели вы найдете задание, присоединенное к операции.
- В списке Global Tasks нажмите Browse the RTI Registry для открытия Web-страницы RTI Registry. В списке отображается только что зарегистрированный вами RTI-сервис, sampleRTI (см. рисунок 20).
Рисунок 20. Список RTI-сервисов
- Нажмите sampleRTI для отображения информации реестра.
- Для отображения WSDL-файла для сервиса в Web-браузере нажмите ссылку WSDL. Через этот WSDL-файл можно активизировать разработанное вами RTI-задание.
Разработка Java-клиента для вызова Web-сервиса
В данном разделе рассказывается, как вызвать разработанный вами Web-сервис, используя Java Client. Нашей основной задачей является разработка Java-клиента. Перед началом работы необходимо подготовить следующую среду:
- Eclipse IDE Version 3.0 или старше - Eclipse используется для разработки Java-проекта; подготовьте Eclipse IDE, чтобы выполнить действия, описанные в данной статье.
- JDK 1.4 или 1.5 - JDK необходим для разработки Java-проекта.
- Apache Axis - Axis используется для генерирования локальной Java-заглушки (stub) для Web-сервиса, что облегчает его активизацию.
Теперь можно приступить к разработке Java-клиента.
- Создайте Java-проект и назовите его
TestRTIJob. - Щелкните правой кнопкой мыши на проекте и выберите Properties. Откроется окно, изображенное на рисунке 21.
- Перейдите в закладку Libraries и добавьте .jar-файлы Axis, показанные на рисунке 21 для данного проекта.
Рисунок 21. Добавление .jar-файлов
- Выберите Run > Run в Eclipse IDE, чтобы открыть окно, показанное на рисунке 22.
Рисунок 22. Генерирование Java-заглушки
- Создайте экземпляр нового Java-приложения в левой панели этого окна, а затем нажмите кнопку Search справа.
- В открывшемся окне Choose Main Type выберите класс WSDL2Java. Этот класс предоставляется Axis для генерирования локальной Java-заглушки для WSDL-файла.
- Нажмите кнопку OK.
- Скопируйте URL WSDL-файла Web-сервиса, который вы только что опубликовали в поле Program arguments, как показано на рисунке 23.
Рисунок 23. Копирование URL WSDL-файла
- Нажмите кнопку Run. После завершения программы вы увидите, что в вашем проекте сгенерированы классы заглушек, как показано на рисунке 24. Эти классы используются для активизации Web-сервиса.
Рисунок 24. Сгенерированные Java-классы заглушек
- Теперь необходимо создать класс под названием
TestRTIJobдля активизации Web-сервиса посредством только что сгенерированных классов заглушек. Исходный код этого класса приведен в листинге 1.
Листинг 1. Вызов Web-сервисаpackage com.ascential.rti.sample; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; public class TestRTIJob { public static void main(String[] args){ SampleLocator locator = new SampleLocator(); SampleDOCLIT service = null; try { service = locator.getsampleSoap(); String name = service.RTIJob("001"); System.out.println("The name is: " + name); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
- Выполните этот класс. Java-консоль выводит информацию о месторасположении пользователя.
Готово! Вы завершили весь процесс - от разработки RTI-задания до публикации его как Web-сервиса для активизации из Java-клиента.
IBM WebSphere DataStage обеспечивает удобный способ разработки заданий DataStage в виде Web-сервисов. В данной статье вы узнали о RTI и всех его характеристиках, затем разработали пример RTI-задания и опубликовали его в виде Web-сервиса. Затем вы активизировали Web-сервис из Java-клиента. Надеемся, что вы ближе познакомились с DataStage и тем, как он комбинируется с SOA.
Научиться
- Оригинал статьи "Beef up SOA with real-time data integration" (EN).
- "Использование приложений на C++ для Web-сервисов при помощи XML-RPC" (developerWorks, июнь 2006) - пошаговое руководство для отображения методов C++ в виде сервисов (EN).
- В разделе Architecture на developerWorks размещены ресурсы, необходимые для совершенствования навыков в области архитектуры приложений (EN).
- В разделе SOA and Web services на IBM developerWorks размещены сотни информативных статей, а также руководства начального, среднего и профессионального уровня, посвященные разработке Web-сервисов (EN).
-
Web-сайт IBM SOA предлагает обзор SOA и информацию о том, как IBM может помочь в работе с этой архитектурой (EN).
- Следите за техническими событиями и web-трансляциями на developerWorks. В частности, просмотрите следующие технические брифинги, посвященные SOA и Web-сервисам:(EN)
- Начало работы с SOA с использованием проверенных, гибких точек входа WebSphere (EN).
- Создание SOA-решений и управление циклом жизни сервиса (EN).
- SCA/SDO: к SOA следующего поколения (EN).
- Повторное использование и совместная работа в SOA (EN).
- Книги по этой и другим техническим темам в книжном магазине Safari.(EN)
-
Демонстрационные материалы по Web-сервисам.(EN)
Получить продукты и технологии
- Разработайте ваш следующий проект, используя пробное программное обеспечение IBM, доступное для загрузки или на DVD.(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
- Примите участие в форумах по SOA и Web-сервисам на developerWorks Россия.
- Подключайтесь к сообществу developerWorks, принимая участие в блогах developerWorks, в частности, в блогах, посвященных SOA и Web-сервисам: (EN)
- Сервис-ориентированная архитектура - неофициальный, Сэнди Картер (Sandy Carter).
- Передовой опыт применения сервис-ориентированной архитектуры, Али Арсанджани (Ali Arsanjani).
- WebSphere SOA и J2EE на практике, Бобби Вульф (Bobby Woolf).
- Создание SOA-приложений при помощи шаблонов, Эоин Лэйн (Dr. Eoin Lane).
- Суть, проблемы и перспективы SOA, Кэрри Холли (Kerrie Holley).
- Сервис-ориентированная архитектура и инструментарий бизнес-уровня, Саймон Джонстон (Simon Johnston).
- SOA, ESB и другие, Сэнджей Боуз (Sanjay Bose).