Опубликован: 14.08.2008 | Уровень: специалист | Доступ: платный
Лекция 10:

Реализация. Создание процесса Request External Reports

10.8.3 Создание среды для тестирования

Для модульного тестирования мы будем использовать все компоненты, идущие за сервером процессов, иными словами, все компоненты, кроме рабочего потока.

Существует два варианта систем оценщиков, которые можно использовать:

  • первый вариант работает на сервере WebSphere Application Server;
  • второй вариант работает в брокере.

Выбор зависит от того, какая версия системы управления оценщиками инсталлирована в WebSphere Application Server. Таблица оценщиков и их URL жестко прописаны в системе управления оценщиками. Одна версия указывает на WebSphere Application Server, а другая – на WebSphere Business Integration Message Broker.

Выбор системы оценщика

Чтобы выбрать систему, выполните следующие шаги:

  1. Проверьте, какая система установлена в данный момент:
    • Откройте браузер и откройте административную консоль WebSphere Application Server на машине SAH414A, введя адрес http://sah414a:9090/admin/.
    • Откройте раздел установленных приложений, поставьте галочку напротив AssessorManagementService и нажмите Export (Экспорт) ( рис. 10.56).
      Административная консоль WebSphere Application Server

      увеличить изображение
      Рис. 10.56. Административная консоль WebSphere Application Server
    • Скачайте файл AssessorManagementService.ear.
    • Вы можете просматривать EAR-файл, используя утилиту распаковки, например WinZip, или же можете импортировать этот файл в WebSphere Studio Application Development Integration Edition в виде нового EAR-проекта, как мы описываем здесь.
      • Выберите пункт меню File (Файл) \to Import (Импорт) \to EAR file (EAR-файл) \to Next (Далее). Найдите файл AssessorManagementService.ear, нажмите Finish (Готово).
      • Откройте перспективу J2EE и представление J2EE Hierarchy (Иерархия J2EE), выберите элемент EJB Modules (EJB-модули) \to AssessorManagementServiceEJB \to Session Beans (Сеансовые компоненты) \to AssessorManagement. Двойным щелчком откройте компонент AssessorManagementBean, откройте представление Outline (Общий обзор) в окне ниже, сделайте двойной щелчок мышью по удаленному интерфейсу requestListAssessors и изучите код, приведенный в примере 10.10.
//Создание жестко прописанного массива оценщиков и нового списка
АssessorList
Assessor stubAssessor = new Assessor();
stubAssessor.setAssessorID( new Integer(9999));
stubAssessor.setAssessorURL( "http://SAH414A:7080/Availability");
Assessor anotherStubAssessor = new Assessor();
// оценщик только один, просто две записи с одним пунктом назначения
anotherStubAssessor.setAssessorID(new Integer(5555));
anotherStubAssessor.setAssessorURL("http://SAH414A:7080/Availability");
Assessor [] assArray = new Assessor[2];
assArray[0] = stubAssessor;
assArray[1] = anotherStubAssessor;
AssessorList stubAssList = new AssessorList();
stubAssList.setAssessors( assArray);
stubAssList.setClaimId( claimID);
Пример 10.10. AssessorManagementSystem: Web-служба requestListAssessors

Можно видеть, что размещаемый EAR-файл использует оценщика, реализованного в брокере.

Чтобы использовать альтернативного оценщика ( пример8Просим прощения за опечатку в URL – эта опечатка "верная". 10.11), найдите директорию .\SG24-6636\WAS\Flow2 и разместите файл Flow2_AssessorManagementService_SOURCE.ear в WebSphere Application Server. Версия для брокера находится в поддиректории Broker Assessor.

stubAssessor.setAssessorURL(
"http://SAH414A:9080/AssessorAvailaibilityApplicationsEJBRouter/services/
Availa
bility");
Assessor anotherStubAssessor = new Assessor();
// оценщик только один, просто две записи с одним пунктом назначения
anotherStubAssessor.setAssessorID(new Integer(5555));
anotherStubAssessor.setAssessorURL("http://SAH414A:9080/AssessorAvailaibilityAp
plicationsEJBRouter/services/Availability");
Пример 10.11. AssessorManagementSystem: фрагмент альтернативного кода для системы оценщика
Ограничение. В настоящий момент для оценщика, работающего с WebSphere Application Server, не реализованы асинхронные ответы. Подтверждение и отчет следует отправлять вручную. По этой причине мы предпочитаем использовать реализацию с брокером. WebSphere MQ применяется для связывания этапов в ответе оценщика. Отсрочку для подтверждений и отчетов можно задавать путем включения и отключения очередей в потоках Flow7A и FLOW8, как описано в разделе 9.9.2, "Каркас системы оценщика и системы для работы с претензиями".
Вызов служб оркестровки

Как вы помните, система proxyAssessorSystem вызывает три односторонние SOAP-службы, принадлежащие к потоку RequestExternalReports. Как нам узнать, какой URL нужно записать в узлы HTTPRequest системы proxyAssessorSystem в брокере для этих служб?

На этапе генерации кода размещения в разделе "Компоновка бизнес-процесса" вы указали адрес маршрутизации для каждой из трех служб - "http://localhost:9080/". Можно ли записать этот путь в ESB для узлов Http Request, которые отвечают Process Choreographer? Оказывается, нельзя.

URL Web-службы, который вы должны указывать в брокере для вызова сервера за- просов о готовности в Choreographer, должен быть таким:

http://SAH414:9080/ITSOLGIWeb/services/RequestExternalReportsAssessor
AvailabilityListHTTPServicePort

Откуда берется такой путь?

  1. В WebSphere Studio Application Development Integration Edition откройте проект ITSOLGIWeb в папке Deployable services (Размещаемые службы).
  2. Найдите файл web.xml (дескриптор размещения в Web) и откройте его.
  3. Вы можете видеть, что в проекте определены три сервлета и JSP. Именно эти службы вызывает брокер.
    Web-службы, размещаемые в RequestExternalReports.bpel

    Рис. 10.57. Web-службы, размещаемые в RequestExternalReports.bpel
    Нажмите кнопку Details (Подробно) и изучите связи URL. Путь для службы AssessorAvailabilitylist будет выглядеть так:
    services/RequestExternalReportsAssessorAvailabilityListHTTPServicePort
    Добавьте этот путь к адресу маршрутизатора в URL, и вы получите полный путь к Web-службе, и его эквивалент для двух других служб:
    ITSOLGIWeb/services/RequestExternalReportsAssessorAvailabilityListHTTP
    ServicePort
  4. Нам нужно изменить URL-адреса в брокере, поскольку они не совпадают с адресами Web-служб в новом процессе, который был нами создан. Сделать это можно без прямого редактирования потока в брокере сообщений. Это одноразовая модификация. После повторного размещения значение этого параметра в потоке снова будет восстановлено. Поэтому лучше будет изменить параметр в потоке:
    • Откройте в брокере административную перспективу, найдите папку Deployables (Размещаемые компоненты) в директории Broker Archives и откройте элемент LGIAvailability.
    • Выберите узел HTTP Request в потоке Output3a и замените URL Web-службы на URL RequestExternalReportsAssessorAvailabilityListHTTPService из модуля ITSOWorkshopWeb.
      http://SAH414:9080/services/RequestExternalReportsAssessorAvailability
      ListHTTPServicePort
    • Повторите процедуру для двух других Web-служб.
    • Снова разместите модули LGIReport и LGIAvailability.
    • Включите нормальную трассировку для обеих групп выполнения.

10.8.4 Тестирование и отладка бизнес-процесса

Прежде чем начинать тестирование Process Choreographer, убедитесь, что все необходимые службы, функционирующие в WebSphere Application Server и WebSphere Business Integration Message Broker, работоспособны. Используйте для этого инструмент Web Services Explorer из WebSphere Studio Application Development Integration Edition.

10.8.5 Тестирование и отладка бизнес-процесса

Чтобы протестировать бизнес-процесс, выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по серверу TestServer и выберите пункт меню Start (Запуск). Сервер будет запущен. Убедитесь, что на консоли появилось сооб- щение message server1 is opened for e-business. Вот несколько типичных проблем, возникающих на этой стадии, и пути их разрешения:
    • Наиболее распространенной причиной ошибок при запуске сервера являются пути, превышающие по длине максимально разрешенные в Windows. Быстрое решение – преобразование директории, содержащей рабочее пространство, с помощью Windows-команды SUBST.
    • Еще одной распространенной причиной проблем, например сообщений о синтаксических ошибках в файле Application.xml, является неверное применение службы.
    Убедитесь, что вы скомпоновали, разместили, опубликовали, запустили и просматриваете simpleProcess, описанный в центре информации.
  2. Откройте представление Servers (Серверы) и выберите пункт меню Launch Business Process Web client (Запустить Web-клиент бизнес-процесса). Откроется окно браузера.
  3. Выберите в меню в левой части окна элемент my template (Мой шаблон). Вы увидите, что процесс RequestExternalReports готов ( рис. 10.58).
    Запущенный клиент Process Choreographer с выбранным элементом My Templates

    Рис. 10.58. Запущенный клиент Process Choreographer с выбранным элементом My Templates
  4. Щелкните по полю RequestExternalReports \to Start instance (Запустить экземпляр). Появится панель, отображающая входное сообщение ( рис. 10.59).
    Входное сообщение процесса

    увеличить изображение
    Рис. 10.59. Входное сообщение процесса
  5. Введите данные. Единственное требование, чтобы данные соответствовали типам. В поле даты вводите дату в формате мм-дд-гггг.
  6. Нажмите кнопку Start instance (Запустить экземпляр), чтобы запустить процесс.
  7. На панели Created by Me (Создано мной) выберите только что запущенный процесс и выберите Monitor (Мониторинг).
  8. Если все в порядке, процесс отобразит список выполненных задач и будет ожидать ввода. На рис. 10.60 показан пример, в котором процесс ждет ответа от выбранного оценщика.
    Ожидание ответа от proxyAssessorSystem

    увеличить изображение
    Рис. 10.60. Ожидание ответа от proxyAssessorSystem
  9. Поскольку для имитации оценщиков мы используем брокер, в WebSphere MQ Explorer в очередях FLOW7A и FLOW8 будут содержаться по одному сообщению, а очереди будут приостановлены для имитации задержки. Освобождение сообщений в нужном порядке приведет к продолжению выполнения.
Отладка процесса

Если процесс не работает так, как ожидалось, у вас есть несколько возможностей для отладки:

  • пошагово проверить выполнение экземпляра процесса;
  • добавить точки останова;
  • изучить данные на каждом из шагов.

Чтобы протестировать процесс в режиме отладки, выполните следующие действия:

  1. Добавьте точку останова для проверки этапов выполнения. Щелкните правой кнопкой мыши по операции в BPEL-редакторе и выберите пункт меню Add Entry/Exit break point (Добавить элемент/точка останова для выхода).
  2. Запустите сервер TestServer в режиме отладки. Щелкните правой кнопкой мыши по TestServer ( рис. 10.61) и выберите пункт Debug (Отладка). Откроется перспектива Debug (Отладка).
    Перспектива Debug (Отладка)

    увеличить изображение
    Рис. 10.61. Перспектива Debug (Отладка)
  3. Выполняйте процесс пошагово, нажимая кнопки step over (Пропуск блока) или step in (Вход в блок) в представлении Debug (Отладка). В представлении Variables (Переменные) в правой части перспективы отображаются значения переменных.

    В качестве примера на рис. 10.62 показан процесс, приостановленный на входе во Java-фрагмент, агрегирующий результаты запроса о том, какие оценщики являются потенциальными кандидатами для проведения оценки и каково значение ResponseTimePolicy для данного клиента.

    Процесс, приостановленный на входе во Java-фрагмент

    Рис. 10.62. Процесс, приостановленный на входе во Java-фрагмент

    Отладка процесса с целью проверки того, какие данные попадают в следующую связь трансформации, будет иметь следующие этапы.

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

  1. Откройте переменную IdentifyAssessorsOutputCriteriaVariable и убедитесь, что служба AssessorManagement вернула список оценщиков.
  2. Войдите (step into) в Java-фрагмент. Откроется закладка Implementation (Реализация) Java-фрагмента.
  3. Пройдите (step over) все инструкции.
  4. На выходе из фрагмента проверьте, чтобы в переменной AggregateRequestAvailability все части были установлены правильно, в особенности список оценщиков.
  5. Перешагните (step over) трансформирующую службу ToRequestAvailability. Отладка такой формы реализации, как список стилей, невозможна.
  6. Теперь проверьте переменную RequestAvailabilityInputCriteriaVariable – задан ли список оценщиков?

Возможно, в данном случае список оценщиков не установлен и причина ошибки в proxyAssessorSystem :ESB.

Илья Макаренко
Илья Макаренко
О начале обучения
Александр Медов
Александр Медов
Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?
Надежда Белякова
Надежда Белякова
Россия
Pavel Pelevin
Pavel Pelevin
Украина, Одесса