В следующих разделах описаны в порядке их появления:
Обстоятельства, при которых используется определенный обработчик.
Использование этих элементов в рамках контекста BPEL Designer.
В этом выпуске BPEL Designer к процессу BPEL можно добавить обработчики сбоев и обработчики событий. Следует отметить, что поддержка обработчиков компенсации и прерываний отсутствует. Для получения подробных сведений о поддерживаемых средствах языка BPEL 2.0 и соответствующих ограничениях см. Руководство пользователя по механизму служб BPEL.
Язык BPEL предоставляет возможность захвата и управления исключениями с использованием обработчиков сбоев. Например, исключения могут возникать при возврате веб-службами данных, отличных от ожидаемых. Невыполнение обработки сбоев может привести к нарушению всего процесса BPEL. Поэтому для предотвращения сбоя процесса в целом можно добавить обработчики сбоев, обеспечивающие захват и управление исключениями в рамках определенных контекстов.
Каждый обработчик сбоев имеет в своем составе действие, выполняемое в случае ошибки. Например, в случае возникновения ошибки выдается оповещение для партнерской службы. Обработчики сбоев могут добавляться как ко всему процессу, так к отдельным элементам контекста.
Существует возможность присоединения одного контейнера обработчика сбоев либо к процессу, либо к отдельным элементам контекста. В контейнере обработчиков сбоев можно создавать несколько действий "Catch", настроенных для захвата определенных видов сбоев, либо один элемент обработчика "Catch All" для захвата всех исключений, не обнаруженных отдельными обработчиками.
Использование
Щелкните правой кнопкой мыши элемент "Scope" или "Process" и выберите "Add > Fault Handlers".
Появится пустой элемент контейнера
Щелкните правой кнопкой мыши контейнер обработчика сбоев и выберите "Add > Catch" или "Add > Catch All".
Можно добавить любое количество соответствующих элементов "Catch", необходимое для группы обработчиков сбоев. Для каждого контейнера обработчиков сбоев можно добавить только один элемент "Catch All".
Добавьте к элементу "Catch" или "Catch All" действие, который должно выполняться в случае сбоя.
Элемент "Catch"
Этот элемент позволяет осуществлять захват и обработку определенных видов сбоев.
Этот элемент используется в рамках соответствующего элемента контейнера обработчиков сбоев.
Свойства элемента "Catch"
Свойства элемента "Catch" определяются в окне "Properties". В качестве альтернативы можно щелкнуть правой кнопкой мыши элемент на диаграмме и выбрать "Properties". Доступны следующие свойства:
Fault Name. Выберите имя сбоя из списка сбоев, в состав которого входят сбои, определенные в файлах WSDL.
Fault Variable Name. Укажите имя существующей переменной BPEL, содержащей сообщение о сбое.
Fault Variable Type. Укажите тип переменной.
Элемент "Catch All"
Элемент "Catch All" позволяет захватывать и обрабатывать все сбои, которые не были захвачены соответствующими элементом "Catch".
Элемент "Catch All" используется в окне обработчика сбоев в дополнение к одному или нескольким элементам "Catch". Элемент "Catch All" определяется в рамках элемента контейнера обработчиков сбоев в дополнение к одному или нескольким элементам "Catch".
Элемент "Catch All" не имеет определенных свойств. Его поведение определено предварительно и не требует какой-либо настройки свойств.
Весь процесс BPEL, а также каждый отдельный элемент "Scope" могут быть связаны с набором обработчиков событий, которые вызываются одновременно в случае возникновения соответствующего события. Действия, выполняемые в рамках обработчика событий, могут относиться к любому типу действий, например, "Sequence" или "Flow". Единственным непосредственным дочерним элементом по отношению к обработчику событий является "Scope", таким образом, в случае перетаскивания элемента из палитры в обработчик событий он автоматически переносится в "Scope".
Существует два типа событий:
Входящие сообщения, соответствующие запросу/ответу или однонаправленной операции в WSDL. Эти сообщения определяются с помощью элементов "On Event".
Оповещения или таймеры, позволяющие вызывать действия по истечении указанных интервалов или достижении крайнего срока. Временные значения определяются с помощью элементов "On Event".
Использование
Щелкните правой кнопкой мыши элемент "Process" или любой элемент "Scope" и вызовите действие "Add" в обработчике событий. Это не приведет к непосредственному добавлению обработчика событий, добавится лишь элемент контейнера, к которому затем можно добавлять определенные обработчики событий.
После добавления контейнера обработчиков событий для добавления ветви "On Event" или "On Alarm" щелкните правой кнопкой мыши требуемый элемент обработчика событий. Можно добавить любое количество соответствующих элементов "On Event" или "On Alarm", необходимое для группы обработчиков событий.
Элемент "On Event"
Элемент "On Event" указывает, что определенное событие ожидает поступления сообщения. Интерпретация этого тега и его атрибутов осуществляется таким же образом, что и для действия "Receive".
Использование
Щелкните правой кнопкой мыши контейнер обработчиков событий и выберите "Add > On Event".
Дважды щелкните элемент "On Event" для открытия редактора свойств, в котором можно определить/изменить следующее:
партнерскую связь;
операцию, связанную с элементом "On Event";
переменную события.
Щелкните правой кнопкой мыши элемент "On Event" и выберите "Properties". Появится окно "Properties", в котором можно просмотреть и изменить свойства элемента. В дополнение к свойствам, отображаемым в диалоговом окне "Property Editor", окно "Properties" содержит поле "Port Type", которое заполняется при указании партнерской связи и операции, и поле "Type", в которое вводится тип указанной переменной события.
Вкладка "Correlations" в диалоговом окне "On Event Property Editor" позволяет просмотреть или определить набор корреляций.
Элемент "On Alarm" указывает крайний срок для процесса вложенного элемента "Scope" или длительность соответствующего интервала.
Свойства элемента "On Alarm"
Свойства элемента "On Alarm" определяются в окне "Properties", для вызова которого следует щелкнуть правой кнопкой мыши элемент на схеме и выбрать "Properties". Доступны следующие свойства:
"Alarm Type" позволяет выбрать тип оповещения. Доступные варианты:
For. Устанавливает длительность интервала ожидания для процесса.
Until. Указывает крайний срок для процесса.
Repeat Every. Указывает частоту инициирования процесса. Это означает, что процесс инициируется каждый раз при истечении указанного промежутка времени. Отсчет времени для самого первого интервала начинается в момент запуска связанного процесса "Scope".
For + Repeat Every. Указывает частоту инициирования процесса по истечении указанного интервала ожидания. Процесс инициируется каждый раз при истечении промежутка времени, указанного в поле "Repeat Every". Первое оповещение выдается при истечении промежутка времени, указанного в поле "For".
Until + Repeat Every. Определяет частоту инициирования процесса на основе указанного крайнего срока. Процесс инициируется каждый раз при истечении промежутка времени, указанного в поле "Repeat Every". Первое оповещение выдается по достижении крайнего срока, указанного в поле "Until".
Второе (и третье, при наличии) свойство используется для определения продолжительности интервала или крайнего срока для выбранного типа оповещения.
Бизнес-процесс часто содержит несколько вложенных транзакций. Общая рабочая транзакция может завершиться сбоем или быть отменена после того, как выполнена обработка целого ряда вложенных транзакций. В этом случае необходимо ликвидировать негативные последствия, возникшие при выполнении процесса. Например, процесс планирования TRAVEL может иметь в своем составе несколько вложенных транзакций для бронирования билетов, резервирования отеля и аренды автомобиля. В случае отмены поездки необходимо компенсировать транзакции резервирования транзакциями отмены в соответствующем порядке. Для таких вариантов WS-BPEL предоставляет возможность определения действий компенсации. Обработчик компенсации – это контейнер для действий, выполняющих операции компенсации. Существует возможность добавления одного обработчика компенсации либо к элементу "Scope", либо к элементу "Invoke". Обработчик компенсации может вызываться действием Compensate Scope или Compensate.
Использование
Для добавления обработчика компенсации к элементам "Scope" или "Invoke":
Щелкните правой кнопкой мыши элемент "Scope" или "Invoke" и выберите "Add > Compensation Handler".
Появится пустой элемент контейнера
Перетащите одно или несколько действий, подлежащих выполнению, из палитры и поместите их в контейнер обработчика компенсации. Настройте свойства каждого действия.
Настраивать какие-либо свойства для обработчика компенсации не требуется.
Обработчик прерываний используется для управления прерыванием работающего контекста. Прерывание работающего контекста происходит при обнаружении ошибки контекста или содержащего его процесса.
В случае сбоя в контексте или процессе необходимо запустить обработчик сбоев, связанный с этим контекстом или процессом, однако перед этим в контексте или процессе со сбоем должны быть завершены все выполняемые действия. Если контекст или процесс со сбоем по-прежнему содержат работающие вложенные контексты, эти контексты также должны быть завершены. Прерывание контекста означает прерывание действий в рамках контекста и запуск связанного с контекстом обработчика прерываний.
Следует отметить, что прерывание контекста возможно только в случае его нормальной работы, либо в случае выполнения соответствующего обработчика компенсации или обработчика прерываний. Выполненный контекст, а также контекст, в котором обнаружена ошибка или запущен обработчик сбоев, не может быть прерван.
Обработчик прерываний – это контейнер для действий, выполняющихся при прерывании контекста. Существует возможность добавления одного обработчика прерываний для контекста.
При возникновении ошибки в обработчике прерываний какого-либо контекста эта ошибка не распространяется на контекст размещения.
Использование
Для добавления обработчика прерываний к элементам "Scope" или "Process":
В режиме проектирования щелкните правой кнопкой мыши элемент "Scope" и выберите "Add > Termination Handler".
Появится пустой элемент контейнера
Перетащите одно или несколько действий, подлежащих выполнению, из палитры и поместите их в контейнер обработчика прерываний. Настройте свойства каждого действия.
Настраивать какие-либо свойства для обработчика прерываний не требуется.