Создание сайтов - статьи

       

Проблемы WSDL


Хорошо разработанный Web-сервис для покупки и продажи акций работает нормально, если все процессы являются атомарными или, другими словами, у них нет общих состояний. Но в этом случае выполнение ряда ключевых требований к интеграции бизнес-процессов обеспечивает только посредством WSDL (рис. 2). Ниже перечислены эти основные требования:

Рис. 2. Торговля акциями с помощью WSDL



  • Последовательность процессов

    Клиент сервиса, использующий Web-сервис купить/продать, может вызывать операции в любой последовательности. Например, клиент может обратиться к операции перевода денег до вызова операций размещения заказов на продажу или покупку (placeBuyOrder или placeSellOrder). WSDL не препятствует вызову операций в любом порядке. Приложение Web-сервиса, использующее WSDL, должно удовлетворять этому путем определенной логики, описанной выше.



  • Взаимосвязь сообщений

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

    В приведенном выше примере, когда пользователь в качестве следующего шага размещает заказ на покупку, приложение Web-сервиса требует подтверждения заказа. Пользователь может захотеть изменить количество акций или дату покупки. Если заказ изменился, его необходимо размещать снова. Такой обмен сообщениями может происходить несколько раз, и пользователь может разместить несколько заказов на покупку, или, другими словами, осуществить несколько диалогов с приложением Web-сервиса.
    Но Web-сервис, использующий только WSDL, не обладает возможностью задания взаимосвязи между экземплярами сообщений.




  • Единица работы

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

    В этом примере операции размещения заказа на покупку (placeBuyOrder) и его подтверждения (confirmBuyOrder), а также процесс снятия денег (debit money) должны осуществляться как одна единица работы. Web-сервис должен успешно выполнить все три операции; в противном случае пользователю придется восстанавливать операции до состояния, соответствующего началу их выполнения. Эти операции не могут быть использованы для распределенных транзакций, выраженных с помощью WSDL. В WSDL рамки транзакции ограничены отдельными операциями и не могут охватывать более одной операции.



  • Обработка исключений

    Хотя WSDL использует код ошибки для генерации любого исключения, он не работает с модельными признаками, такими как проверка определенного сообщения, объявление об истечении времени ожидания исключения или объявление исключения только для некоторого набора операций, а не для всего Web-сервиса.

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



  • Контекст

    При взаимодействии бизнес-процессов важно, чтобы у них был общий контекст для обмена информацией. Эта информация может быть набором деклараций, исключительных событий или свойств транзакций. У WSDL нет никаких возможностей для того, чтобы процессы работали в рамках контекста.



Содержание раздела