О начале обучения |
Реализация. Создание корпоративной сервисной шины
9.8 Размещение набора сообщений и потоков
Наша следующая задача – это размещение наборов сообщений и потоков для их последующего тестирования, но сначала нам нужно реализовать URL: http://SAH414A:7080/UNKNOWN, который был определен в потоках 4 и 7 как URL оценщика по умолчанию на случай, если поток не сможет задать URL оценщика динамически. Это одна из ситуаций из разряда "этого не должно случиться никогда", и поэтому мы ля ее обработки используем тривиальный поток брокера.
9.8.1 Создание потока UNKNOWN
В проекте потока сообщений CommonSOAPHttpFlows создайте новый поток сообщений UnknownAssessor ( рис. 9.110).
Перетащите в поток узел HttpInput и подпоток Fault и задайте свойства узла HttpInput следующим образом:
- Закладка Basic (Общие):
- Закладка Default (По умолчанию):
- Закладка Validation (Проверка):
- Validate (Проверять): Content and Value (Содержимое и значение);
- Failure Action (Действие при ошибке): Exception (Исключение).
9.8.2 Создание архива брокера
Чтобы разместить потоки и набор сообщений, нам нужно создать архив брокера (Broker Archive, bar-файл) и указать, какие потоки и наборы сообщений будут в него входить. Для простоты мы определили один .bar-файл, содержащий все, что нам нужно, и разместили его в одной группе выполнения на одном брокере. Если бы нам, например, захотелось разместить потоки Assessor Availability отдельно от потоков Assessor Report, мы бы создали два архива брокера.
- Переключитесь на перспективу Broker Administration (Администрирование брокера).
- Щелкните правой кнопкой мыши по элементу Broker Archives (Архивы брокера), выберите пункт меню New (Новый) > Message Broker Archive (Архив брокера сообщений), присвойте новому файлу имя Assessor и нажмите Finish (Готово).
- В редакторе .bar-файлов [панель Content (Содержимое)] нажмите на зеленый значок Add (Добавить) и выберите потоки и набор сообщений, как показано на рис. 9.111. Нажмите Finish (Готово).
- Нажмите Details (Подробно) в диалоговом окне, чтобы проверить наличие ошибок. Нажмите OK. Получившийся архив выглядит так, как показано на рис. 9.112. Обратите внимание, что отображаются только потоки с входными (Input) узлами.
- Сохраните файл Assessor.bar.
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, "Инсталляция и конфигурирование брокера сообщений" и установите соединение с брокером через инструментарий. Обратите внимание на раздел "Конфигурация инструментария".
- В перспективе Broker Administration (Администрирование брокера) откройте представление Domain (Домен) и щелкните правой кнопкой мыши по элементу WBRK_BROKER. Выберите пункт меню New (Новая) Execution Group (Группа выполнения), назовите группу выполнения Assessor и нажмите Finish (Готово) ( рис. 9.113).
- Перетащите файл Assessor.bar в новую группу выполнения. Изучите подробные сведения в появившемся окне, нажмите OK.
- Сделайте двойной щелчок мышью по журналу событий (Event log) в представлении Domain (Домен). Изучите открывшийся журнал FMCQM ( рис. 9.114). При выборе сообщения отображается его содержимое. Если вы точно следовали инструкциям, ошибок быть не должно.
- Обновите группу выполнения в представлении Domains (Домены). Результат показан на рис. 9.115.
9.9 Модульное тестирование размещенных потоков
Для тестирования размещенных потоков необходимы:
- Инструмент тестирования для отправки и получения образцов SOAP-сообщений
- Каркас системы для работы с оценщиками и претензиями. Можно использовать образец приложения для оценщиков, работающий на WebSphere Application Server.
- Знание методов трассировки и отладки потоков 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-монитор, с помощью которого можно увидеть, какие данные реально передаются.
увеличить изображение
Рис. 9.116. Использование Web services Explorer для тестирования WebSphere Business Integration Message Broker
9.9.2 Каркас системы оценщика и системы для работы с претензиями
Создать каркас системы оценщика и системы для работы с претензиями для тестирования системы proxyAssessorSystem очень легко. Одна из сложностей, связанных с системой оценщика, состоит в том, что она работает асинхронно и возвращает два сообщения в ответ на запрос к выбранному оценщику. Сложно запрограммировать в EJB определенные и неопределенные задержки.
Альтернативой является создание потока сообщений в брокере и имитация задержки путем помещения сообщений WebSphere MQ в приостановленные очереди с освобождением сообщений только по требованию (флаг Get Inhibit).
На рис. 9.117 показан базовый каркас системы готовности оценщика. Этот поток посылает HTTP-ответ, а затем отправляет сообщение о готовности оценщика. Узлы Mapping позволяют легко сформировать правильное содержимое сообщений. Трассировочные узлы дают возможность отлаживать и проверять решение.
На рис. 9.118 показан базовый каркас системы отправки отчета оценщика. Структура практически аналогична предыдущей, но на этот раз после ответа выполняются два потока, которые посылают подтверждение, а затем сам отчет. Запросы помещаются в очереди WebSphere MQ. Два других потока принимают запросы из очередей, когда флаг Get Inhibit сбрасывается при помощи инструмента MQ Explorer, а затем генерируют HTTP-запросы, посылаемые в систему proxyAssessorSystem.
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-выражения для формирования выводимых данных, ведь для отладки большой объем дампа весьма полезен.
Номер сообщения (Message number) выбирается из предустановленного каталога из зарезервированного диапазона (3051-3099), и для него существует заранее заданное сообщение. Можно определять дополнительные каталоги и сообщения, но для отладки имеющийся каталог сообщений вполне подходит.
Обычной процедурой является вызов консоли управления Windows (Windows Management Console) и просмотр журнала приложений. Очистите журнал перед запуском трассировки, и, если вы правильно выбрали номера сообщений, процесс выполнения можно легко проследить по трассировочным событиям, появляющимся в журнале.
Отладка
Последней технологией, которую мы опишем, является традиционная пошаговая отладка.
Откройте перспективу Flow Debug (Отладка потока), которая отображается в виде красного жучка (). Диалоговое окно поможет вам подключиться к брокеру, а затем – к одной или нескольким группам выполнения, а также расставить точки останова. Обратите внимание, что кнопка, на которую нужно нажимать, чтобы выполнить шаг в ESQL-коде, отличается от кнопки, которую нужно нажать, чтобы выполнить шаг в потоке сообщений, и ее часто не замечают ( рис. 9.120).
В окнах переменных отображаются значения переменных при прохождении ESQL-кода в вычислительном узле. Если в вашем потоке нет кода ESQL, отладчик будет не слишком полезен. В окне переменных есть специальная папка Debug Message, в которой отображаются все доступные в потоке данные ( рис. 9.121).
В окнах переменных отображаются значения переменных при прохождении ESQL-кода в вычислительном узле. Если в вашем потоке нет кода ESQL, отладчик будет не слишком полезен. В окне переменных есть специальная папка Debug Message, в которой отображаются все доступные в потоке данные ( рис. 9.121).