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

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

9.4.4 Импортирование схем в брокер

Далее импортируйте файлы схем в рабочее пространство инструментария Broker Toolkit. Вы можете организовать импорт схем, поместив файлы схем, относящиеся к каждому проекту набора сообщений, в соответствующий проект, или же можно импортировать все схемы в общую папку.

  1. В перспективе Broker Application Development перейдите в окно Resource Navigator (Навигатор ресурсов), щелкните правой кнопкой мыши по элементу proxyAssessorSystem и выберите пункт меню File (Файл) \to Import (Импорт) \to File system (Файловая система) \to Next (Далее):
    • Перейдите к директории, в которой находятся файлы схем, и отметьте файлы, которые вы хотите импортировать.
    • В качестве пункта назначения для импортированных ресурсов уже должна быть указана система proxyAssessorSystem. Установите флажок Create selected folders only (Создавать только указанные папки) и нажмите Finish (Готово).
  2. Проверьте схемы, открыв и изучив их графическое представление и сравнив их с исходными WSDL-файлами ( рис. 9.22).
  3. Используя представление Outline (Общий обзор), выберите схему верхнего уровня или выберите верхний уровень на графической закладке. Затем откройте закладку Design редактора свойств и убедитесь, что в поле целевого пространства имен указано нужное вам пространство.
  4. Последнее, что нужно импортировать, – это файл схемы, который описывает SOAP-сообщения. При помощи Web-браузера посетите сайт World Wide Web Consortium (W3C): http://schemas.xmlsoap.org/soap/envelope/ Сохраните схему для SOAP 1.1.
Схема RequestAssessorAvailablity

увеличить изображение
Рис. 9.22. Схема RequestAssessorAvailablity

9.4.5 Использование схем для создания MDF

Теперь, когда все наши файлы схем находятся в рабочем пространстве Broker Toolkit, мы можем использовать их для заполнения файлов определений сообщений (message definition file, MDF).

  1. В перспективе Broker Application Development, в окне Resource Navigator (Навигатор ресурсов), щелкните правой кнопкой мыши по файлу схемы, который вы хотите использовать в качестве источника определений сообщений. Выберите пункт меню New (Новый) \to Message Definition File (Файл определения сообщений).
  2. Переключатель XML schema file (Файл XML-схемы) должен быть включен. Нажмите Next (Далее). Выберите применяемый файл схемы и нажмите Next (Далее). Выберите проект Assessor Messageset, который вы создали, и нажмите Next (Далее). Установите флажки выбора глобальных элементов и нажмите Finish (Готово).

Вы создали новый файл определений сообщений (.mxsd). Повторите данные шаги для каждого файла схемы. Вы должны получить 10 сообщений об ошибках, связанных с конфликтом имен ( рис. 9.23).

Ошибки при импортировании определений сообщений в один набор сообщений

увеличить изображение
Рис. 9.23. Ошибки при импортировании определений сообщений в один набор сообщений
Устранение дубликатов имен и типов

Легче всего устранить шесть ошибок, помеченных буквами А. Эти ошибки вызваны тем, что поток 3 и поток 4 используют одинаковые имена сообщений. Высокоуровневые элементы сообщения применять необязательно, поскольку в действительности мы будем использовать сообщение-конверт SOAP (SOAP envelope).

Оставшиеся четыре ошибки вызваны дубликатами типов CarDetails и AssessorAckMessage в одном пространстве имен. В данном случае нам повезло. Это полные дубликаты, и мы можем удалить один из дублей, заменив его ссылкой. Если бы типы имели одинаковые имена и пространства имен, но при этом различались, то у нас было бы только два варианта: заставить одну из команд разработки изменить определения в исходных материалах и внести изменения везде, где изменения определений на что-то повлияли, или использовать несколько наборов сообщений для хранения конфликтующих типов.

Решение проблемы дублирования имен сообщений

Эта ошибка, возникающая, даже если сообщения находятся в разных пространствах имен, вызвана тем, что версия 5 WebSphere Business Integration Message Broker не использует в данной ситуации пространства имен для различения сообщений. Возможно, это будет исправлено в версии 6.

Для решения проблемы дублирования имен сообщений, выполните следующие действия:

Удаление дубликатов сообщений

Рис. 9.24. Удаление дубликатов сообщений
  1. Откройте файл определений сообщений AssessorAvailablity(3) и выберите папку Messages. На рис. 9.24 мы используем для этого представление Outline (Общий обзор).
  2. Удалите сообщения requestAssessorAvailablity и requestAssessorAvailabilityReponse и сохраните файл определений.

Число ошибок уменьшится до четырех.

Решение проблемы дублирования типов

Эта процедура несколько более хитрая. Проблема показана на рис. 9.25.

Конфликт типов

Рис. 9.25. Конфликт типов

Тип AssessorAckMessage в пространстве имен itso.lgi.broker имеет дубликаты, которые обведены на левой половине рисунка. Тип CarDetails дублируется в пространстве имен itso.assessor, как показано в правой части. Обратите внимание, что в пространстве имен itso.assessor есть дубликат типа AssessorAckMessage, но это не представляет проблемы, поскольку этот дубль находится в другом пространстве имен.

Важно! Если разница пространств имен позволяет нам дублировать определение AssessorAckMessage, это не означает, что наш код понятен. Сами определения или их смысл могут быть иными. Однако такая ситуация обычна при интеграции корпоративных приложений. Не делайте никаких допущений. Эти структуры и их определения могут происходить из разных организаций или отражать разные версии. На имена и пространства имен не всегда можно полагаться.

Мы удалим тип AssessorAckMessage из AssessorReport(8) и заменим его ссылкой на определение в DeliverAssessment(7).

  1. Откройте в представлении Outline (Общий обзор) файл AssessorReport(8) и посмотрите, где находится определение типа AssessorAckMessage и какие на него есть ссылки ( рис. 9.26).
    Тип AssessorAckMessage в сообщении AssessReport(8)

    Рис. 9.26. Тип AssessorAckMessage в сообщении AssessReport(8)
  2. Удалите тип и нажмите OK в появляющемся сообщении для подтверждения удаления элемента receiveAssessorReportReturn.
  3. Выделите сообщение receiveAssessorReportResponse, щелкните правой кнопкой мыши и выберите пункт меню Add Local Element (Добавить локальный элемент). Введите значение receiveAssessorReportReturn, чтобы восстановить элемент.
  4. Новый элемент отобразится в окне редактора определения сообщения. Выберите string в столбце Type (Тип), а в раскрывающемся списке выберите More (Еще).
  5. Выберите тип AssessorAckMessage и квалификатор http://assessor.itso. На рис. 9.27 показано восстановленное сообщение-ответ.
    Заново созданное сообщение-ответ receiveAssessorReportResponse

    Рис. 9.27. Заново созданное сообщение-ответ receiveAssessorReportResponse

Используя сходную процедуру, удалите одно из определений CarDetails.

  1. Удалите тип CarDetails. Нажмите OK в предупреждающем сообщении.
  2. Откройте элемент requestAssessorAvailability в редакторе определения сообщения. Щелкните правой кнопкой мыши по элементу ** Anonymous **, выберите пункт меню Add Local Element и введите имя cardet.
  3. Укажите тип string и выберите в раскрывающемся окне пункт More (Еще). Укажите в поле типа CarDetails и введите квалификатор http://assessor.itso. Нажмите OK.
    Определение и ссылка на определение CarDetails в сообщении Availability(4)

    Рис. 9.28. Определение и ссылка на определение CarDetails в сообщении Availability(4)
  4. Перетащите элемент cardet в нужную позицию между assessorID и location. Получившийся элемент показан на рис. 9.29.
    Заново созданный элемент requestAssessorAvailability

    Рис. 9.29. Заново созданный элемент requestAssessorAvailability
  5. Сохраните файл определений сообщений. Теперь все ошибки должны быть исправлены.
Илья Макаренко
Илья Макаренко
О начале обучения
Александр Медов
Александр Медов
Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?
Надежда Белякова
Надежда Белякова
Россия
Pavel Pelevin
Pavel Pelevin
Украина, Одесса