Опубликован: 14.08.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Компания IBM
Лекция 9:

Реализация. Создание корпоративной сервисной шины

9.8 Размещение набора сообщений и потоков

Наша следующая задача – это размещение наборов сообщений и потоков для их последующего тестирования, но сначала нам нужно реализовать URL: http://SAH414A:7080/UNKNOWN, который был определен в потоках 4 и 7 как URL оценщика по умолчанию на случай, если поток не сможет задать URL оценщика динамически. Это одна из ситуаций из разряда "этого не должно случиться никогда", и поэтому мы ля ее обработки используем тривиальный поток брокера.

9.8.1 Создание потока UNKNOWN

В проекте потока сообщений CommonSOAPHttpFlows создайте новый поток сообщений UnknownAssessor ( рис. 9.110).

Поток UNKNOWN

Рис. 9.110. Поток UNKNOWN

Перетащите в поток узел HttpInput и подпоток Fault и задайте свойства узла HttpInput следующим образом:

  1. Закладка Basic (Общие):
    • в поле URL Selector (Выбор URL) укажите http://SAH414A:7080/UNKNOWN;
    • в поле Client Wait Time (Время ожидания клиента) укажите 30 секунд.
  2. Закладка Default (По умолчанию):
    • Message domain (Домен сообщений): MRM;
    • Message Set (Набор сообщений): Assessor;
    • Message Type (Тип сообщений): Envelope;
    • Message Format (Формат сообщений): XML1;
  3. Закладка Validation (Проверка):
    • Validate (Проверять): Content and Value (Содержимое и значение);
    • Failure Action (Действие при ошибке): Exception (Исключение).

9.8.2 Создание архива брокера

Чтобы разместить потоки и набор сообщений, нам нужно создать архив брокера (Broker Archive, bar-файл) и указать, какие потоки и наборы сообщений будут в него входить. Для простоты мы определили один .bar-файл, содержащий все, что нам нужно, и разместили его в одной группе выполнения на одном брокере. Если бы нам, например, захотелось разместить потоки Assessor Availability отдельно от потоков Assessor Report, мы бы создали два архива брокера.

  1. Переключитесь на перспективу Broker Administration (Администрирование брокера).
  2. Щелкните правой кнопкой мыши по элементу Broker Archives (Архивы брокера), выберите пункт меню New (Новый) > Message Broker Archive (Архив брокера сообщений), присвойте новому файлу имя Assessor и нажмите Finish (Готово).
  3. В редакторе .bar-файлов [панель Content (Содержимое)] нажмите на зеленый значок Add (Добавить) и выберите потоки и набор сообщений, как показано на рис. 9.111. Нажмите Finish (Готово).
  4. Нажмите Details (Подробно) в диалоговом окне, чтобы проверить наличие ошибок. Нажмите OK.
    Создание файла Assessor.bar

    Рис. 9.111. Создание файла Assessor.bar
    Получившийся архив выглядит так, как показано на рис. 9.112. Обратите внимание, что отображаются только потоки с входными (Input) узлами.
    Файл Assessor.bar

    Рис. 9.112. Файл Assessor.bar
  5. Сохраните файл Assessor.bar.
Совет. Вы можете открыть .bar-файл с помощью инструмента для работы с .zip-файлами и изучить его содержимое. Одной из полезных хитростей, о которой вам может сказать специалист по брокеру, является то, что, если у вас возникают проблемы с SQL-кодом, сгенерированным узлами для работы с базами данных в потоках сообщений, вам следует изучать SQL-код в bar-файле, а не в формате .xmi в перспективе Development (Разработка) рабочего места. Вы можете увидеть здесь то, что в действительности было размещено. Вы также можете обнаружить, что SQL-код стало проще читать, поскольку некоторые символические значения были решены. См. пример 9.20.
CREATE PROCEDURE Flow3a_DataUpdate (IN s_Envelope REFERENCE
{'http://schemas.xmlsoap.org/soap/envelope/'}:Envelope)
BEGIN
--$IBM_WBIMB_XMIID=UpdateStatement_1
UPDATE Database.EMERGE.CLAIMASSESSOR AS "T#"
--$IBM_WBIMB_XMIID=UpdateStatement_1#assignments
SET PREDCOST = s_Envelope.soap11:Body.fl8:assessorAvailability.fl8:
predCost,
PREDDATE = s_Envelope.soap11:Body.fl8:assessorAvailability.fl8:predDate
WHERE "T#".CLAIMID =
s_Envelope.soap11:Body.fl8:assessorAvailability.fl8:claimID AND
"T#".ASSESSORID =
s_Envelope.soap11:Body.fl8:assessorAvailability.fl8:assessorID ;
END;
Пример 9.20. Образец SQL-кода из .bar-файла
Размещение файла Assessor.bar в брокере

Запустите сервер с брокером сообщений, если вы этого еще не сделали. Обратитесь к разделу 7.2.5, "Инсталляция и конфигурирование брокера сообщений" и установите соединение с брокером через инструментарий. Обратите внимание на раздел "Конфигурация инструментария".

  1. В перспективе Broker Administration (Администрирование брокера) откройте представление Domain (Домен) и щелкните правой кнопкой мыши по элементу WBRK_BROKER. Выберите пункт меню New (Новая) \to Execution Group (Группа выполнения), назовите группу выполнения Assessor и нажмите Finish (Готово) ( рис. 9.113).
    Создание группы выполнения Assessor

    Рис. 9.113. Создание группы выполнения Assessor
  2. Перетащите файл Assessor.bar в новую группу выполнения. Изучите подробные сведения в появившемся окне, нажмите OK.
  3. Сделайте двойной щелчок мышью по журналу событий (Event log) в представлении Domain (Домен). Изучите открывшийся журнал FMCQM ( рис. 9.114). При выборе сообщения отображается его содержимое. Если вы точно следовали инструкциям, ошибок быть не должно.
    Проверка журнала событий

    Рис. 9.114. Проверка журнала событий
  4. Обновите группу выполнения в представлении Domains (Домены). Результат показан на рис. 9.115.
    Группа выполнения Assessor после размещения

    Рис. 9.115. Группа выполнения Assessor после размещения

9.9 Модульное тестирование размещенных потоков

Для тестирования размещенных потоков необходимы:

  1. Инструмент тестирования для отправки и получения образцов SOAP-сообщений
  2. Каркас системы для работы с оценщиками и претензиями. Можно использовать образец приложения для оценщиков, работающий на WebSphere Application Server.
  3. Знание методов трассировки и отладки потоков WebSphere Business Integration Message Broker.

9.9.1 Инструменты для тестирования

Существует несколько клиентских SOAP-инструментов для тестирования. Наиболее доступным и универсальным является Web services Explorer ( рис. 9.116), входящий в пакеты WebSphere Studio Application Development Integration Edition и Rational Software Architect. Этот инструмент позволяет загрузить WSDL-файл и изменять его части, например адрес Web-службы. В него входят представления Form (Форма) и Trace (Трассировка) для просмотра содержимого сообщений-запросов и ответов. Обе эти рабочие среды содержат также TCP-монитор, с помощью которого можно увидеть, какие данные реально передаются.

Использование Web services Explorer для тестирования WebSphere Business Integration Message Broker

увеличить изображение
Рис. 9.116. Использование Web services Explorer для тестирования WebSphere Business Integration Message Broker

9.9.2 Каркас системы оценщика и системы для работы с претензиями

Создать каркас системы оценщика и системы для работы с претензиями для тестирования системы proxyAssessorSystem очень легко. Одна из сложностей, связанных с системой оценщика, состоит в том, что она работает асинхронно и возвращает два сообщения в ответ на запрос к выбранному оценщику. Сложно запрограммировать в EJB определенные и неопределенные задержки.

Альтернативой является создание потока сообщений в брокере и имитация задержки путем помещения сообщений WebSphere MQ в приостановленные очереди с освобождением сообщений только по требованию (флаг Get Inhibit).

На рис. 9.117 показан базовый каркас системы готовности оценщика. Этот поток посылает HTTP-ответ, а затем отправляет сообщение о готовности оценщика. Узлы Mapping позволяют легко сформировать правильное содержимое сообщений. Трассировочные узлы дают возможность отлаживать и проверять решение.

Поток базового каркаса для системы отправки данных о готовности оценщика

Рис. 9.117. Поток базового каркаса для системы отправки данных о готовности оценщика

На рис. 9.118 показан базовый каркас системы отправки отчета оценщика. Структура практически аналогична предыдущей, но на этот раз после ответа выполняются два потока, которые посылают подтверждение, а затем сам отчет. Запросы помещаются в очереди WebSphere MQ. Два других потока принимают запросы из очередей, когда флаг Get Inhibit сбрасывается при помощи инструмента MQ Explorer, а затем генерируют HTTP-запросы, посылаемые в систему proxyAssessorSystem.

Поток базового каркаса для системы отправки отчетов оценщика

Рис. 9.118. Поток базового каркаса для системы отправки отчетов оценщика

9.9.3 Потоки трассировки и отладки

Существует три основных метода отладки потоков WebSphere Business Integration Message Broker: использование трассировки, использование трассировочных узлов и отладчик в рабочей среде.

Одной из лучших функциональностей WebSphere Business Integration Message Broker является возможность отладки. Соответствующие инструменты помогают визуализировать все данные, проходящие от угла к узлу, и, если вы захотите, вы можете с помощью средств трассировки получить полную распечатку функционирования потоков, можете использовать трассировочные узлы для регистрации части операций или можете с помощью отладчика пошагово проходить разделы потока или SQL-кода с интерактивной модификацией данных в ходе выполнения.

Трассировка

Управление трассировкой осуществляется из командной строки, и она работает на уровне групп выполнения. Вы можете изменить уровень трассировки и трассировать отдельные потоки, для чего нужно установить опции в представлении Domains (Домены) рабочей среды.

Приведенные ниже пять скриптов помогут быстро выполнить трассировку.

Скрипт ClearAtrace (пример 9.21) и скрипт GetAtrace (пример 9.22) работают с интерфейсами брокера. Уровень трассировки, установленный, например, с помощью средств рабочей среды, остается без изменений. Скрипты ClearTraces и GetTraces (примеры 9.23 и 9.24) содержат списки исследуемых групп выполнения, а скрипт (пример 9.25) сводит все эти скрипты в одну команду, запускаемую каждый раз, когда нужно выполнить трассировку.

@rem очистка трассировочного журнала
@SETLOCAL
@rem первый аргумент – имя брокера, а второй – группа выполнения
@mqsichangetrace %1 -u -e %2 -r
@echo Tracing options for execution group %2 running on broker %1
@mqsireporttrace %1 -u -e %2
@ENDLOCAL
Пример 9.21. ClearAtrace: очистка трассировочного журнала группы выполнения
@rem Получение данных в трассировочный журнал
@SETLOCAL
@rem первый аргумент – имя брокера, а второй – группа выполнения
@mqsireadlog %1 -u -e %2 -o %2.xml
@mqsiformatlog -i %2.xml -o %2.txt
@start notepad %2.txt
@ENDLOCAL
Пример 9.22. GetAtrace: получение форматированной трассировочной информации для группы выполнения
@SETLOCAL
@Call ClearAtrace WBRK_BROKER LGIAvailability
@Call ClearAtrace WBRK_BROKER LGIReport
@Call ClearAtrace WBRK_BROKER Assessor
@ENDLOCAL
Пример 9.23. ClearTraces: очистка журналов всех интересующих нас групп выполнения
@SETLOCAL
@Call GetAtrace WBRK_BROKER LGIAvailability
@Call GetAtrace WBRK_BROKER LGIReport
@Call GetAtrace WBRK_BROKER Assessor
@Call ClearTraces
@ENDLOCAL
Пример 9.24. GetTraces: получение всей трассировочной информации
@SETLOCAL
@Call GetTraces
@Call ClearTraces
@ENDLOCAL
Пример 9.25. Trace: получение всей информации и ее очистка
Трассировочные узлы

Трассировочные узлы () можно вставлять в любое место потока или присоединять параллельно к другому выходному коннектору.

На рис. 9.119 показан типичный трассировочный узел. Он сконфигурирован на вывод в журнал событий Windows события, которое выглядит как Error 3096 и содержит информацию из дерева сообщений, локального окружения (LocalEnvironment), списка исключений и окружения (Environment). Не имеет никакого значения, если какие-то данные в период выполнения оказываются пустыми. Используйте SQL-выражения для формирования выводимых данных, ведь для отладки большой объем дампа весьма полезен.

Типичный трассировочный узел

Рис. 9.119. Типичный трассировочный узел

Номер сообщения (Message number) выбирается из предустановленного каталога из зарезервированного диапазона (3051-3099), и для него существует заранее заданное сообщение. Можно определять дополнительные каталоги и сообщения, но для отладки имеющийся каталог сообщений вполне подходит.

Обычной процедурой является вызов консоли управления Windows (Windows Management Console) и просмотр журнала приложений. Очистите журнал перед запуском трассировки, и, если вы правильно выбрали номера сообщений, процесс выполнения можно легко проследить по трассировочным событиям, появляющимся в журнале.

Отладка

Последней технологией, которую мы опишем, является традиционная пошаговая отладка.

Откройте перспективу Flow Debug (Отладка потока), которая отображается в виде красного жучка (). Диалоговое окно поможет вам подключиться к брокеру, а затем – к одной или нескольким группам выполнения, а также расставить точки останова. Обратите внимание, что кнопка, на которую нужно нажимать, чтобы выполнить шаг в ESQL-коде, отличается от кнопки, которую нужно нажать, чтобы выполнить шаг в потоке сообщений, и ее часто не замечают ( рис. 9.120).

Точка останова в потоке сообщений с возможностью трассировки ESQL

Рис. 9.120. Точка останова в потоке сообщений с возможностью трассировки ESQL

В окнах переменных отображаются значения переменных при прохождении ESQL-кода в вычислительном узле. Если в вашем потоке нет кода ESQL, отладчик будет не слишком полезен. В окне переменных есть специальная папка Debug Message, в которой отображаются все доступные в потоке данные ( рис. 9.121).

Debug Message

Рис. 9.121. Debug Message

В окнах переменных отображаются значения переменных при прохождении ESQL-кода в вычислительном узле. Если в вашем потоке нет кода ESQL, отладчик будет не слишком полезен. В окне переменных есть специальная папка Debug Message, в которой отображаются все доступные в потоке данные ( рис. 9.121).

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Игорь Васильев
Игорь Васильев
Россия, СПб
Андрей Рязанов
Андрей Рязанов
Россия, Москва, Московский Энергетический Институт (Технический Университет), 2004