Хорошо разработанный Web-сервис для покупки и продажи акций работает нормально, если все процессы являются атомарными или, другими словами, у них нет общих состояний. Но в этом случае выполнение ряда ключевых требований к интеграции бизнес-процессов обеспечивает только посредством WSDL (рис. 2). Ниже перечислены эти основные требования:
Рис. 2. Торговля акциями с помощью WSDL
Клиент сервиса, использующий Web-сервис купить/продать, может вызывать операции в любой последовательности. Например, клиент может обратиться к операции перевода денег до вызова операций размещения заказов на продажу или покупку (placeBuyOrder или placeSellOrder). WSDL не препятствует вызову операций в любом порядке. Приложение Web-сервиса, использующее WSDL, должно удовлетворять этому путем определенной логики, описанной выше.
Взаимосвязь - это простая идея, которая состоит в том, что при обмене сообщениями (т.е. при отправке письма кому-либо и получении позднее ответа на него) используется некоторый общий элемент данных в возвращаемом экземпляре сообщения для его связи с экземпляром исходного сообщения. При взаимодействии бизнес-процессов очень важно понимать и описывать взаимосвязь между экземплярами сообщений. У WSDL нет возможностей для задания взаимосвязи между экземплярами сообщений. Другими словами, WSDL не поддерживает состояние между операциями. При обычной интеграции бизнес-процессов для обеспечения совместного процесса процессы обычно используют одно состояние. Все операции, описанные с помощью WSDL, не не имеют состояния.
В приведенном выше примере, когда пользователь в качестве следующего шага размещает заказ на покупку, приложение Web-сервиса требует подтверждения заказа. Пользователь может захотеть изменить количество акций или дату покупки. Если заказ изменился, его необходимо размещать снова. Такой обмен сообщениями может происходить несколько раз, и пользователь может разместить несколько заказов на покупку, или, другими словами, осуществить несколько диалогов с приложением Web-сервиса.
Но Web-сервис, использующий только WSDL, не обладает возможностью задания взаимосвязи между экземплярами сообщений.