Добрый день. Вопрос №1 Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте? Вопрос №2 Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже? |
Реализация. Создание корпоративной сервисной шины
9.4.6 Настройка SOAP MDF (soap11.mxsd)
У нас есть несколько вариантов определения конверта SOAP, в который заключаются схемы сообщений.
- Добавить необходимые SOAP-теги для обработки входящих сообщений и создать исходящие сообщения, используя знание спецификации SOAP без воссоздания правил и ограничений для правильно сформированных SOAP-сообщений.
- Использовать импортированную нами SOAP-схему для определения SOAP-сообщений. Мы можем применять эту схему для проверки правильности входящих SOAP-сообщений и для обеспечения правильного формирования наших собственных SOAP-сообщений.
Для файла определения сообщений, созданного при помощи сданной схемы, будут выводиться предупреждения, поскольку модель сообщений MRM не полностью совпадает с XML-схемами. Мы можем решить эту проблему несколькими способами:
- Игнорировать предупреждения. В представлении Tasks (Задачи) есть параметр фильтра, позволяющий удалять какие-то предупреждения из задач или все предупреждения.
- Стереть исходный файл схемы, удалив причину предупреждений.
- Отредактировать файл определения сообщения, используя редактор брокера, и усовершенствовать проверки с использованием модели сообщений MRM на основе редактирования SOAP-спецификации, дополнив правила, указанные в определении схемы.
Мы выбрали вариант "с" – с редактированием файла определения сообщения для улучшения проверки SOAP-сообщений. Нужно выполнить два следующих действия:
- Создать файл определения SOAP-сообщения из SOAP-схемы.
- Изменить определение схемы SOAP-сообщения, чтобы избавиться от предупреждений и "улучшить" проверку.
Создание файла определения SOAP-сообщения
Схема SOAP 1.1 будет вызывать ошибку при преобразовании в файл определения сообщений; поэтому, прежде чем продолжить, нам нужно изменить ее. Брокер не поддерживает атрибуты списков. Откройте импортированную схему SOAP 1.1 в редакторе схем брокера, переключитесь на представление Source (Исходный код) и внесите изменения в соответствии с примером 9.8. Строка (<xs:list ... >) блокируется символом комментария и добавляются строки, начинающиеся с (<xs:restr ... >).
<xs:simpleType name="encodingStyle"> <xs:annotation> <xs:documentation>'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification </xs:documentation> </xs:annotation> <!-- <xs:list itemType="xs:anyURI" /> --> <xs:restriction base='xs:string'> <xs:pattern value='http://schemas.xmlsoap.org/soap/encoding%' /> </xs:restriction> </xs:simpleType>Пример 9.8. Изменение файла определения SOAP-сообщения
Создайте новый файл определения сообщения в проекте Assessor Messageset, преобразовав измененную схему SOAP 1.1. Назовите это определение сообщения SOAP11. Вы увидите 13 предупреждений.
Создание SOAP-оболочки для сообщений
С помощью редактора файла определений сообщений внесите описанные ниже правки, что позволит избавиться от предупреждений и сжать проверку корректности SOAP-сообщений.
- Удалите элементы Wildcard из элементов Envelope, Header, Body и Detail (потомка элемента Fault) См. рис. 9.8.
- Удалите атрибут Wildcard из элемента Body.
- Удалите пространства имен из трех оставшихся атрибутов Wildcard, показанных на
рис.
9.31. Для этого выделяйте каждый атрибут по очереди и открывайте закладку Properties (Свойства) вместо закладки Overview (Обзор) в редакторе определений сообщений (
рис.
9.32).
Совет. Быстрее всего будет использовать представление Outline для выбора атрибутов, а затем вам нужно один раз перейти на закладку Properties (Свойства).
- Установите в поле Content Validation (Проверка содержимого) для сложного типа Envelope значение OpenDefined (изначально там указано значение Closed ) ( рис. 9.33). Это означает, что потомками типа Envelope могут быть только атрибуты, определенные в данном наборе сообщений. Явными потомками его являются Header и Body.
- Установите в поле Content Validation (Проверка содержимого) для сложных типов Header и Detail значение Open (вместо установленного там Closed). Это означает, что здесь допустимо использовать любые атрибуты. Заголовки SOAP не являются обязательными, поэтому значение Min Occurs (Минимальное число вхождений) можно установить равным нулю, но такое значение не поддерживается в MRM, поэтому мы оставим значение 1.
- Укажите в поле Complex type (Сложный тип) элемента Body вариант Composition, а в поле Content Validation (Проверка содержимого) – значение OpenDefined. Это позволит использовать в качестве потомка элемента Body любой из элементов импортированной схемы, но не элементы, отсутствующие в схеме.
- Удалите шаблон (pattern facet) глобального атрибута mustUnderstand, поскольку
он не является необходимым, и его удаление устраняет предупреждение, выдаваемое
инструментарием Broker Toolkit (
рис.
9.34).
Примечание. Данный шаблон представляет собой определение того, какие значения может принимать переменная. Булев тип имеет шаблон 0|1, что делает его похожим на перечислимый тип.
- Добавьте в схему SOAP элемент Fault как потомок элемента Body. Для этого выделите элемент Body, щелкните правой кнопкой мыши и выберите пункт меню Add element reference (Добавить ссылку на элемент) ( рис. 9.35).
- Прокрутите список до элемента soap11:Fault ( рис. 9.36).
- В том же окне укажите для элемента Fault в поле Min Occurs (Минимальное число вхождений) значение 0 и сохраните изменения. Вы увидите, что все предупреждения исчезли.
Выполнив данные шаги, мы создали SOAP-оболочку для наших сообщений. Теперь нам нужно ввести сообщения в эту оболочку.
9.4.7 Создание SOAP-сообщений
При наличии SOAP-оболочки нам нужно выполнить еще пару шагов, чтобы завершить создание SOAP-сообщений в брокере:
- Сохранить SOAP-оболочку для последующего использования, чтобы не приходилось проходить процедуру редактирования заново.
- Ввести сообщения Assessor в поле Body оболочки SOAP.
Сохранение оболочки SOAP
Мы экспортируем оболочку SOAP в виде файла XML-схемы, и ее можно будет использовать в других проектах наборов сообщений в будущем.
Выберите файл определения сообщения SOAP11.mxsd в навигаторе ресурсов, выберите пункт меню New (Новая) XML Schema (XML-схема). Выберите wire-формат XML1 и убедитесь в том, что файл SOAP11.mxsd выделен. Выберите пункт Strict Generation (Точная генерация) Next (Далее), создайте новую папку для хранения XML-схемы (например, Generated) и нажмите Finish (Готово).
Преобразование сообщений Assessor в SOAP-сообщения
Последняя задача в создании набора сообщений – это объединение определения SOAP с каждым из 10 сообщений Assessor. Мы сделаем это путем импортирования файлов определений сообщений Assessor в файлы определений SOAP-сообщений, а затем сделаем сообщения Assessor потомками элементов Body SOAP-сообщения.
Начнем с определения сообщения AllocateAssessment(6).
- Импортируйте файлы определений сообщений (MDF), представляющие службы
Assessor в SOAP MDF:
- Выделите файл SOAP11.mxsd в навигаторе ресурсов и перейдите на закладку Properties (Свойства) редактора определений сообщений, как показано на рис. 9.37.
- Щелкните правой кнопкой мыши по пункту Imports (Импорты) Add (Добавить), выделите файл определения сообщения AllocateAssessment(6) и нажмите Finish (Готово).
- Повторите эту операцию для всех файлов определений сообщений, как показано на рис. 9.39.
- Теперь, когда мы можем ссылаться в SOAP MDF на сообщения Assessor данного
проекта, добавим глобальные элементы сообщений Assessor в качестве потомков
в элемент SOAP Body:
- При выделенном файле определения SOAP11.mxsd откройте закладку Overview (Общий обзор) и раскройте структуру Messages (Сообщения) Envelope, как показано на рис. 9.40.
- Щелкните правой кнопкой мыши по элементу Body, выберите пункт меню Add Element Reference (Добавить ссылку на элемент) и добавьте все элементы.
- Укажите для параметра minOccurs (Минимальное число вхождений) каждой из структур значение 0, поскольку ни одна из них не является обязательной.
- Повторите процедуру для остальных 16 элементов верхнего уровня, как показано на рис. 9.41 и 9.42.
- Префиксы, которые мы добавили для различения сообщений, были урезаны, префиксы дублирующихся пространств имен – потеряны.
- Нет квалификаторов пространств имен, которые помогли бы выбрать правильный элемент. Лучше всего щелкнуть один раз правой кнопкой мыши по вставленной ссылке на элемент, выбрать пункт меню Go To Declaration (Перейти к объявлению) и убедиться в том, что ссылка указывает на нужный элемент (рис. 9.42).
- Ведите работу систематически. Мы добавляли ссылки в том порядке, в котором идут потоки, придерживаясь вида, показанного на рис. 9.11 и 9.12.
- В конце подсчитайте количество ссылок. Их 17. Это число должно совпадать с числом определений элементов. Три потока представляют собой односторонние SOAP-сообщения, поэтому число интерфейсов в них меньше в два-три раза.
- Проверьте, чтобы не было дублирующихся ссылок.
- Убедитесь в том, что все ссылки являются потомками элемента Body и ни один из них не был записан к другому предку.
- Убедитесь в том, что все значения Min Occurs равны нулю. Все эти элементы необязательные.