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

       

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


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

WSCI может сгенерировать исключение на основе сообщения о сбое из WSDL, содержания сообщения или какого-либо события (например, превышения лимита ожидания). Появление такого исключения вызывает отмену текущего контекста после выполнения действий, связанных с этим исключением. Таким образом, WSCI поддерживает концепцию "восстанавливаемых исключений" (recoverable exceptions), которые не вызывают отмены всей хореографии (что похоже на концепцию throw/catch в JavaTM). Но появление сбоя, для которого не определено никакого исключительного поведения, вызывает отмену контекста и появления сбоя в родительском контексте. Более абстрактно, исключение, связанное с обработкой поведения, определенного в родительском контексте, может работать как поведение по умолчанию для всех своих потомков, и наоборот: исключение, связанное с обработкой поведения, определенного в дочернем контексте, может замещать исключение, связанное с обработкой поведения, определенного в своем родителе.

Как показано в листинге 5, если подтверждение заказа занимает более минуты, приложение выдает сообщение о превышении лимита ожидания. В WSC это осуществляется с помощью операции о превышении этого лимита. Элемент превышения лимита ожидания (<onTimeout>) фактически является событийным элементом, который используется внутри элемента исключения. Через минуту возникает событие превышения лимита ожидания, и система использует элемент компенсации для возвращения к прежнему состоянию размещения заказа на покупку (placeBuyOrder).



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