Элемент "Process" изначально присутствует в диаграмме. Мастера создания проекта всегда создают скелетный файл BPEL, который содержит по крайней мере элемент "Process". Поэтому элемент "Process" не является частью окна "Palette". Предполагается, что элемент "Process" присутствует всегда, так как его присутствие входит в минимальные требования для файла BPEL.
Укажите свойства элемента "Process" в окне "Properties". Для вызова окна щелкните правой кнопкой мыши элемент и выберите "Properties" или выберите в главном меню "Window > Properties" (Ctrl-Shift-7).
Процессы
Процесс BPEL может быть синхронным или асинхронным. Синхронный процесс BPEL блокирует клиента (использующего процесс) до окончания процесса и возвращает клиенту результат. Асинхронный процесс не блокирует клиента. Вместо этого он использует для возврата результата (при его наличии) обратный вызов. Обычно асинхронные процессы используются для длительных процессов, синхронные же – для процессов, возвращающих результат в относительно короткое время. Если процесс BPEL использует асинхронные веб-службы, то, как правило, сам процесс также является асинхронным.
Элемент "Invoke" позволяет бизнес-процессу вызвать однонаправленную операцию или операцию категории "запрос – ответ" для portType, предложенного партнером. Это позволяет бизнес-процессу отправлять партнерам сообщения.
Использование
В режиме проектирования перетащите элемент "Invoke" из окна "Palette" в диаграмму.
Для привязки элемента "Invoke" к элементу "Partner Link" выполните одну из следующих процедур:
Непосредственно нарисуйте поток сообщений, идущий от элемента "Invoke" к целевому элементу "Partner Link"
Дважды щелкните элемент "Invoke" (или щелкните его правой кнопкой мыши и выберите "Edit"). Откроется диалоговое окно редактора свойств, в котором можно просмотреть и изменить следующие данные:
Имя элемента "Invoke".
Партнерская связь, которую требуется вызвать.
Операция, связанная с элементом "Invoke".
Обратите внимание на то, что операция определена в файле WSDL партнера.
Входные и выходные переменные, связанные с элементом "Invoke".
Для хранения входных и выходных данных в диалоговом окне редактора свойств можно создать новую переменную или использовать существующую. Для создания переменной для элемента "Invoke" нажмите кнопку "Create", а для выбора существующей переменной нажмите кнопку "Browse".
Обратите внимание, что при нажатии кнопки "Browse" открывается диалоговое окно "Input Variable Chooser" или "Output Variable Chooser". В этих диалоговых окнах имеется флажок, ограничивающий список переменных переменными того типа, который соответствует настраиваемым действиям. Это упрощает разработку корректного кода BPEL в режиме проектирования.
Корреляции
Наборы корреляций для действий "Invoke" в исходящем направлении используются с целью проверки того, что данные исходящих сообщений совместимы с данными, содержащимися в указанных экземплярах наборов корреляций.
Вкладка "Correlations" в диалоговом окне редактора свойств для элемента "Invoke" позволяет проанализировать и определить набор корреляций.
Элемент "Receive" вынуждает бизнес-процесс ожидать поступления определенного сообщения.
Использование
В режиме проектирования перетащите элемент "Receive" из окна "Palette" в диаграмму.
Дважды щелкните элемент "Receive" (или щелкните его правой кнопкой мыши и выберите "Edit"), откроется диалоговое окно редактора свойств. В диалоговом окне настройте элемент "Receive". Ниже приведены данные для примера службы бронирования билетов "Travel Reservation Service":
Имя элемента "Receive" (ReceiveItinerary).
Партнерская связь (Travel).
Операция, связанная с элементом "Receive" (buildItinerary).
Входная переменная для элемента "Receive" (ItineraryIn).
С помощью кнопки "Browse" для "Input Variable" откройте диалоговое окно для выбора входной переменной, в котором можно выбрать другие переменные, связанные с этим процессом. Для создания новой переменной нажмите кнопку "Create".
Флажок "Create Instance". Если он установлен, то после поступления связанного сообщения запускается экземпляр процесса BPEL. Следует отметить, что если действие "Receive" является первым действием в бизнес-процессе, то следует установить флажок "Create Instance".
Корреляции
Вкладка "Correlations" в диалоговом окне редактора свойств для элемента "Receive" позволяет проанализировать и определить набор корреляций.
Некоторые свойства элемента можно также изменить в окне "Properties". Для открытия окна щелкните правой кнопкой мыши элемент "Receive" и выберите "Properties" или выберите в главном меню "Window > Properties" (Ctrl-Shift-7).
Это действие используется для возврата сообщения от процесса партнеру, инициировавшему обмен. Сочетание действий "Receive" и "Reply" образует действие категории "запрос – ответ".
Эта операция используется в синхронном взаимодействии, и для нее необходим тот же самый партнер, тип порта и операция, что и для соответствующей операции "Receive" в процессе.
Использование
В режиме проектирования перетащите элемент "Reply" из окна "Palette" в диаграмму.
Для открытия диалогового окна редактора свойств для элемента "Reply" дважды щелкните элемент "Reply" (или щелкните его правой кнопкой мыши и выберите "Edit"). В этом диалоговом окне можно указать следующее:
Имя элемента.
Партнерская связь.
Операция.
Тип ответа: "Normal Response" или "Fault Response".
Если элемент "Reply" должен использоваться для нормального типа ответного сообщения, выберите "Normal Response". Дополнительно укажите выходную переменную: создайте новую выходную переменную или выберите существующую.
Если элемент "Reply" должен использоваться для отправки сообщения об ошибке, выберите "Fault Response". Выберите название сбоя и дополнительно укажите переменную сбоя: создайте новую переменную сбоя или выберите существующую.
Корреляции
Вкладка "Correlations" в диалоговом окне редактора свойств для элемента "Reply" позволяет проанализировать и определить набор корреляций.
Некоторые свойства элемента можно также изменить в окне "Properties". Для открытия окна щелкните правой кнопкой мыши элемент "Reply" и выберите "Properties" или выберите в главном меню "Window > Properties" (Ctrl-Shift-7). Диалоговое окно содержит следующее:
Элементы "Partner Link" идентифицируют стороны, взаимодействующие с бизнес-процессом. Каждая ссылка определяется типом партнерской связи и именем роли.
Типы партнерских связей и роли
Тип определяет взаимосвязь между процессом и его партнерами путем описания ролей, исполняемых в разговоре каждой службой. Далее взаимосвязь определяется путем указания типа порта для получения сообщений каждой службой. Каждая роль определяет один тип порта в файле WSDL.
Роли определяют диалоговый аспект процесса или его партнера. Для синхронной операции используется одна роль, так как результаты возвращаются с помощью этой же самой операции. Для асинхронной операции используются две роли, так как роль партнера переключается во время обратного вызова.
Тем не менее, важно различать партнерские связи и типы партнерских связей:
Типы партнерских связей и роли представляют собой специальные расширения WSDL, определенные спецификацией BPEL. Поэтому они определяются в файлах WSDL, а не в файле BPEL процесса.
Партнерская связь является элементом BPEL 2.0. Она определяется в файле BPEL процесса.
Типы партнерских связей являются предварительными условиями для определения элемента "Partner Link". Элемент "Partner Link" может быть определен только путем ссылки на конкретный тип партнерской связи и роль, которые, как уже говорилось, должны быть определены в файле WSDL.
Использование
Для добавления элемента "Partner Link" к процессу BPEL выполните одно из следующих действий:
Перетащите элемент "Partner Link" из окна "Palette" в диаграмму.
Перетащите узел файла WSDL из того же самого проекта в окне "Projects" в диаграмму.
Перетащите узел файла WSDL из другого проекта в окне "Projects" в диаграмму.
Перетащите узел веб-службы из проекта EJB или проекта веб-приложения в окне "Projects" в диаграмму.
Примечание: При перетаскивании узла веб-службы BPEL Designer получает файл WSDL от сервера приложений. Для успешного получения файла WSDL сервер приложений должен быть запущен, а проект веб-службы должен быть развернут.
При перетаскивании элемента "Partner Link", узла файла WSDL или узла веб-службы появляется редактор свойств для элемента "Partner Link".
Редактор свойств для элемента "Partner Link"
Диалоговое окно редактора свойство для элемента "Partner Link" позволяет устанавливать партнерские связи для процессов BPEL.
Для вызова редактора свойств элемента "Partner Link" необходимо дважды щелкнуть элемент "Partner Link" на диаграмме или щелкнуть правой кнопкой мыши элемент "Partner Link" и выбрать "Edit". Редактор свойств для элемента "Partner Link" появляется также при перетаскивании в диаграмму элемента "Partner Link", узла файла WSDL или узла веб-службы.
С помощью редактора свойств "Partner Link" можно указать:
Имя партнерской связи
Файл WSDL, ассоциированный с партнерской связью
Далее можно выбрать, использовать ли существующий тип партнерской связи или создать новый.
Если выбранный файл WSDL содержит типы партнерских связей, то выбирается пункт "Use Existing Partner Link Type" и раскрывающийся список "Partner Link Type" заполняется типами партнерских связей, найденными в файле WSDL. Можно воспользоваться одним из существующих типов партнерских связей или выбрать пункт "Use a Newly Created Partner Link Type" для создания нового типа партнерской связи.
Если файл WSDL не содержит типы партнерских связей, то выбирается пункт "Use a Newly Created Partner Link Type".
Use Existing Partner Link Type
Выберите из раскрывающегося списка тип партнерской связи. Поля "My Role" и/или "Partner Role" заполняются автоматически.
Для смены ролей самого бизнес-процесса ("My Role") и партнера ("Partner Role") нажмите кнопку "Swap Roles".
Use a Newly Created Partner Link Type
Укажите файл WSDL для добавления типа партнерской связи. Для этого можно выполнить одно из следующих действий
Добавьте тип партнерской связи к файлу WSDL обертки, как предлагается средой IDE в поле "Create in File" по умолчанию. При выборе этой возможности среда IDE автоматически создаст в структуре проекта файл WSDL обертки. Файлы WSDL обертки используются в том случае, когда исходный файл WSDL предназначен только для чтения или когда отсутствует необходимость изменения исходного файла WSDL. Исходный файл WSDL будет импортирован в только что созданный файл WSDL обертки.
Добавьте тип партнерской связи к файлу WSDL проекта. Нажмите кнопку "Browse" и определите файл WSDL, в который необходимо добавить тип партнерской связи.
Укажите имя типа партнерской связи.
Укажите роль самого бизнес-процесса ("My Role") и/или роль партнера ("Partner Role") следующим образом:
Установите соответствующий флажок.
Укажите имя роли.
Выберите из раскрывающегося списка тип порта.
Свойства "Partner Link" можно также просмотреть и изменить в окне "Properties", для вызова которого необходимо щелкнуть правой кнопкой мыши элемент и выбрать "Properties".
Размещение партнерской связи
Партнерские связи размещаются на левом и правом полях диаграммы процесса. Потребители службы размещаются на левой стороне, поставщики служб – на правой. При определении роли и выборе соответствующей стороны для каждой партнерской связи среда IDE использует порядок ролей, определенных для "partnerLinkType" в файле WSDL. Роль, определенная первой в "partnerLinkType" в файле WSDL, считается ролью службы, а вторая роль считается ролью для потребителя и получателя обратного вызова. Если роли определены в файле WSDL в обратном порядке (роль получателя обратного вызова определена на первом месте, а роль потребителя на втором), то размещение партнерских связей на диаграмме процесса BPEL будет неправильным, несмотря на то, что это не окажет влияния на выполнение. Если партнерская связь отображается на неправильной стороне, вероятно, необходимо перейти к файлу WSDL и поменять местами определения ролей в "partnerLinkType".
Иногда приходится взаимодействовать с партнерской службой, конечные точки которой не известны заранее, или изменять ссылка на конечную точку (EPR) во время выполнения процесса. Компонент "Dynamic Partner Links" позволяет динамически присваивать партнерской связи ссылку на конечную точку. Это означает, что можно использовать одну партнерскую связь для взаимодействия с несколькими веб-службами, если эти службы имеют один и тот же интерфейс.
Для каждой партнерской связи определена абстрактная и конкретная информация. В то время как абстрактная информация, описывающая интерфейс веб-службы, должна быть статической, конкретная информация доступа, такая как адрес и порт, может обнаруживаться и использоваться динамически.
Примечание: Для успешного развертывания процесса партнерская связь должна быть определена полностью. Это означает, что при развертывании проекта файл WSDL партнерской связи должен содержать для определяемой ссылки партнера и абстрактную и конкретную информацию, включающую адрес и порт, несмотря на то, что позже эта конкретная информация может быть изменена независимо от файла WSDL.
Примечание: Спецификация BPEL допускает динамическое изменение только EPR партнера. В терминах BPEL, новое значение можно присвоить только для "partnerRole" элемента "partnerLink". После развертывания BPEL значение "myRole" не изменится.
Для присвоения новой EPR партнерской связи можно использовать стандартное действие "Assign", а также окно BPEL Mapper.
Информация по EPR может быть предоставлена различными способами:
ее можно предоставить как литерал (ввести вручную ссылочную информацию конечной точки в литерал) и привязать к партнерской связи;
использовать входящее сообщение для получения адреса конечной точки;
использовать переменную типа "Service Reference";
скопировать EPR из одной партнерской связи в другую.
При использовании входящего сообщения схема EPR должна быть определена как часть сообщения в WSDL. Для присвоения EPR партнерской связи используйте переменную сообщения.
Для присвоения новой ссылки на конечную точку партнерской связи из переменной:
Создайте в процессе новое действие "Assign".
Откройте окно BPEL Mapper.
В целевом дереве справа найдите партнерскую связь, для которой необходимо предоставить новую конкретную часть.
В исходном дереве найдите переменную, содержащую новый адрес конечной точки
Адрес веб-службы может быть определен в терминах различных схем, а для контейнера JBI требуется специальный тип данных с именем "ServiceRefType", который является простой оберткой для любого описывающего конечную точку типа данных.
Для обертки данных:
На панели инструментов BPEL Mapper выберите "BPEL > Wrap with Service Reference".
Эта функция является функцией "doXslTranform", которая использует предопределенную таблицу типа XSL.
Создайте входящее соединение от переменной к функции. Затем создайте исходящее соединение к партнерской связи.
Партнерской связи будет присвоена новая конкретная часть.
Примечание: Среда выполнения поддерживает только схемы, предусмотренные в спецификации WS-BPEL 2.0. Схема WS-Addressing не входит в спецификацию BPEL и поэтому не поддерживается средой выполнения BPEL. При первом использовании схема WS-Addressing копируется из глобального каталога NetBeans в корень исходных файлов проекта модуля BPEL, и далее проект ссылается на локальную копию схемы. В окне "Projects" среди файлов проекта модуля появляется также схема adressing.xsd.
Действие "Assign" используется для присвоения значений переменным или партнерским связям. Элемент "Assign" используется для копирования данных из элементов, для составления и вычисления выражений и хранения новых данных в целевых элементах. Выражения необходимы для выполнения простых вычислений или для оперирования свойствами, литералами и выбором сообщений при производстве новых значений. Действие "Assign" может содержать одно или несколько элементарных присваиваний.
Использование
Для определения правил копирования в действии "Assign" и для добавления выражений используйте окно BPEL Mapper. Для получения дополнительных сведений см. раздел руководства Случай с действием "Assign".
Окно BPEL Mapper доступно в редакторе BPEL в виде вкладки.
Для открытия окна BPEL Mapper можно также дважды щелкнуть действие "Assign" на диаграмме или нажать комбинацию клавиш Ctrl-Shift-F9.
Свойства элемента "Assign"
Окно "Properties" элемента "Assign", вызванное в результате двойного щелчка элемента и выбора "Properties", содержит два свойства:
Name. Это имя элемента.
Assignments Count. Это количество правил присваивания, указанных для элемента.
Использование элемента "Empty"
Элемент "Empty" не имеет связанных с ним операций. Как правило, он используется в качестве метки-заполнителя внутри процесса для обнаружения и подавления сбоев или для синхронизации внутри потока действий, выполняющихся одновременно.
Элемент "Empty" можно использовать при реализации извне бизнес-процесса, или когда действия в потоке должны быть синхронизированы.
Использование
Перетащите элемент "Empty" из окна "Palette" в диаграмму.
Использование элемента "Wait"
Элемент "Wait" используется для указания условия ожидания, основанного на единице времени или продолжительности.
Использование
Перетащите элемент "Wait" из окна "Palette" в диаграмму. Аналогично другим элементам, этот элемент должен быть помещен в правильную позицию потока процесса; в противном случае он не будет виден в диаграмме.
Щелкните правой кнопкой мыши элемент в диаграмме и выберите "Properties" для вызова окна "Properties". С помощью окна "Properties" можно указать:
Имя элемента.
Тип уведомления. Доступные варианты:
For – указывает для процесса продолжительность ожидания.
Until – указывает время, до которого откладывается процесс.
For/Until. Нажатие кнопки с многоточием (...) приводит к открытию диалогового окна, где в соответствии с выбранным сроком завершения указывается время.
Использование элемента "Throw"
Это действие используется для подачи сигнала о внутреннем сбое.
Использование
При определении свойств этого элемента можно указать название сбоя и переменную сбоя. Затем эти сведения могут быть переданы обработчику сбоев, настроенному на соответствующий вид исключений.
Свойства элемента "Throw"
Свойства элемента "Throw" могут быть настроены через окно "Properties", для вызова которого необходимо щелкнуть правой кнопки мыши элемент и выбрать "Properties". Доступные варианты:
Name
Название сбоя. При нажатии кнопки с многоточием (...) вызывается диалоговое окно "Fault Name", в котором можно выбрать сбой из списка сбоев, определенных в файлах WSDL.
Для добавления определений сбоев в файл WSDL можно использовать редактор WSDL. Для получения дополнительных сведений см. раздел "Настройка типов портов при помощи режима просмотра WSDL" в Руководстве разработчика по работе с редактором WSDL.
Fault Variable. Нажмите кнопку с многоточием (...) для указания имени переменной, уже объявленной в файле BPEL, которая будет содержать сообщение о сбое.
Использование элемента "Rethrow"
Действие "Rethrow" можно использовать только в обработчике сбоев. Действие "Rethrow" используется для повторной выдачи информации о сбое, обнаруженном обработчиком сбоев. Перед добавлением элемента "Rethrow" в процесс BPEL необходимо добавить элемент "Fault Handler" в элемент "Process" или "Scope" и добавить элемент "Catch" или "Catch All" в контейнер "Fault Handler".
Использование
Если контейнер "Fault Handler" не был добавлен в диаграмму, в режиме проектирования щелкните правой кнопкой мыши элемент "Scope" или "Process" и выберите "Add > Add Fault Handlers".
Щелкните правой кнопкой мыши контейнер "Fault Handler" и выберите "Add > Add Catch" или "Add > Catch All".
Перетащите элемент "Rethrow" из окна "Palette" в диаграмму и поместите его внутрь элемента "Catch" или "Catch All" контейнера "Fault Handler".
Необходимость определять свойства для элемента "Rethrow" отсутствует, поскольку он повторно выдает информацию о сбое, обнаруженном обработчиком сбоев.
Использование элемента "Exit"
Это действие используется для остановки выполнения действия или процесса: внутри процесса, внутри структурированного действия или внутри обработчика.
Использование
В режиме проектирования перетащите элемент "Exit" из окна "Palette" в диаграмму.
Примечание: Среда выполнения BPEL не поддерживает "Exit" в элементах "Flow" и "On Alarm", а также в дочернем элементе "On Event" элемента "Event Handler".
Использование элемента "Compensate"
Действие "Compensate" может использоваться только в элементах "Catch", "CatchAll", "Compensation Handler" или "Termination Handler".
Действие "Compensate" вызывает коррекцию всех контекстов, непосредственно включенных в контекст, содержащий обработчик сбоев, обработчик компенсации или обработчик прерываний с действием "Compensate".
Использование
Из окна "Palette" перетащите действие "Compensate" и поместите его в элемент "Catch", "CatchAll", "Compensation Handler" или "Termination Handler" на диаграмме. Действие "Compensate" не требует настройки свойств, его поведение предопределено.
Действие "Compensate" может использоваться только в элементах "Catch", "CatchAll", "Compensation Handler" или "Termination Handler".
Действие "Compensate Scope" позволяет выполнять корректировку для одного указанного элемента "Scope" или "Invoke", входящего в контекст, содержащий обработчик с действием "Compensate Scope", посредством вызова обработчика компенсации элемента "Scope" или "Invoke".
Использование
Из окна "Palette" перетащите действие "Compensate Scope" и поместите его в элемент "Catch", "CatchAll", "Compensation Handler" или "Termination Handler" на диаграмме.
Щелкните правой кнопкой мыши элемент "Compensate Scope" и выберите "Properties".
В диалоговом окне "Properties" укажите следующие свойства:
Name. Введите произвольное имя.
Target. Из раскрывающегося списка выберите контекст или действие "Invoke", для которого требуется компенсация.
Documentation. При необходимости введите к действию комментарий.
Использование элемента "If"
Действие "If" поддерживает условное поведение экземпляра бизнес-процесса. Действие "If" состоит из условных ветвей, определенных элементами "If" и "Else If", за которыми может следовать необязательная ветвь "Else". Условия в ветвях "If" и "Else If" вычисляются в порядке появления. Во время вычисления выбирается первая ветвь с истинным значением условия, и выполняется действие, указанное для действия "If". Другими словами, при наличии нескольких ветвей "Else If", содержащих истинные значения условий, выполняется только первая из них.
Если ветвей с истинным значением условия нет, то выбирается путь "Else". Если ветвь "Else" явно не определена, то считается, что эта ветвь содержит действие "Empty". Действие "If" завершается при завершении действия, указанного в выбранной ветви.
Использование
В режиме проектирования перетащите элемент "If" из окна "Palette" в диаграмму.
Выберите элемент "If" на диаграмме. В нижней части экрана среды IDE появится окно BPEL Mapper. Если окно BPEL Mapper не появилось, щелкните правой кнопкой мыши элемент "If" и выберите "Show BPEL Mapper".
Укажите для элемента "If" условие с помощью окна BPEL Mapper. Для получения дополнительных сведений см. раздел руководства Случай с действием "If". Условие можно также указать вручную в окне "Properties", для вызова которого необходимо щелкнуть правой кнопкой мыши элемент и выбирать "Properties".
(Дополнительно) В окне "Properties" введите для элемента "If" имя.
Добавьте элемент, который будет выполняться при истинном значении условия в элементе "If". Настройте вложенный элемент. При добавлении еще одного элемента в элемент "If" в качестве обертки для вложенных элементов автоматически используется элемент "Sequence".
Добавьте другие ветви ("Else If" и "Else"), как описано ниже.
Добавление ветви "Else If" в элемент "If"
Щелкните правой кнопкой мыши элемент "If" и выберите "Add Else If".
Добавьте к "Else If" действие, которое будет выполняться в случае, если условие, определенное для этого элемента "Else If", является истинным. Для определения условия используйте окно BPEL Mapper.
(Дополнительно) Добавьте другие действия "Else If" путем выбора "Add Else If" и добавления к ветвям действий.
Добавление ветви "Else" к элементу "If"
Перетащите действие, которое следует выполнять в ветви "Else", в соединение, отмеченное наклонной чертой вправо. Настройте вложенное действие.
Переупорядочение ветвей "Else If"
В режиме проектирования перетащите ветвь "Else If", которую необходимо переупорядочить, на метку-заполнитель, появившуюся рядом с другой ветвью "Else If".
Использование элемента "While"
Элемент "While" предназначен для многократного выполнения одного или нескольких действий, пока в начале каждой итерации возникают определенные условия. Этот элемент содержит другие элементы, которые повторяются, пока выполняются указанные условия. Если указанное условие ложно с самого начала, то перечисленные действия не будут выполнены.
Примечание: Сначала элемент "While" проверяет истинность условия, а затем выполняет итерационное действие. Элемент Repeat Until, наоборот, сначала выполняет действие, а затем проверяет истинность условия.
Использование
В режиме проектирования перетащите элемент "While" из окна "Palette" в диаграмму.
Перетащите действие, которое будет многократно выполняться, и поместите его в элемент "While". При необходимости настройте свойства действия.
Для указания имени и условия элемента "While" используйте окно "Properties". Условие можно ввести вручную или использовать для его создания окно BPEL Mapper. Для открытия окна BPEL Mapper выберите "Window > BPEL Mapper" или щелкните правой кнопкой мыши элемент "While" на диаграмме и выберите "Show BPEL Mapper".
Использование элемента "Repeat Until"
Элемент "Repeat Until" предназначен для многократного выполнения одного или нескольких действий до тех пор, пока после выполнения итерации не будут иметь место определенные условия. Этот элемент содержит другие элементы, которые повторяются до тех пор, пока не выполнятся указанные условия. Если указанное условие истинно с самого начала, то перечисленные действия будут выполнены один раз.
Примечание: Сначала элемент "Repeat Until" выполняет итерационное действие, а затем проверяет истинность условия. Элемент While, наоборот, сначала проверяет истинность условия, а затем выполняет действие.
Использование
В режиме проектирования перетащите элемент "Repeat Until" из окна "Palette" в диаграмму.
Перетащите действия, которые предполагается выполнять многократно, и поместите их в элемент "Repeat Until". При необходимости настройте свойства действия.
Для указания имени и условия элемента "Repeat Until" используйте окно "Properties". Условие можно ввести вручную или использовать для его создания окно BPEL Mapper. Для открытия окна BPEL Mapper выберите "Window > Other > BPEL Mapper" или щелкните правой кнопкой мыши элемент "Repeat Until" на диаграмме и выберите "Show BPEL Mapper".
Использование элемента "For Each"
Элемент "For Each" используется для выполнения действия, находящегося в его контексте, ровно N+1 раз, где N равно "Final Counter Value" (конечное значение счетчика) минус "Start Counter Value" (начальное значение счетчика).
Использование
В режиме проектирования перетащите элемент "For Each" из окна "Palette" в диаграмму.
Добавьте элементы, которые будут многократно выполняться, из окна "Palette" в элемент "For Each". В качестве обертки для добавляемых элементов автоматически используется элемент "Scope".
Для открытия окна "Properties" щелкните правой кнопкой мыши элемент "For Each" и выберите "Properties".
Окно "Properties" для элемента "For Each" содержит перечисленные ниже свойства.
Name. Указывает имя элемента "For Each".
Counter Variable Name. Объявляет имя переменной счетчика.
Start Counter Value. Устанавливает начальное значение счетчика. Для создания целочисленного выражения используйте окно BPEL Mapper.
Final Counter Value. Устанавливает конечное значение счетчика. Для создания целочисленного выражения используйте окно BPEL Mapper.
После запуска действия "For Each" значения "Start Counter Value" и "Final Counter Value" вычисляются в первый и последний раз. Таким образом, после возврата эти два значения остаются постоянными до конца выполнения действия. Если начальное значение счетчика больше конечного значения счетчика, то итерация не будет выполнена.
Completion Condition (дополнительно). Определяет целочисленное выражение. После выполнения каждого непосредственно включенного действия количество выполненных действий сравнивается с этим значением. Если количество выполненных действий равно значению указанного выражения, действия более не выполняются. Если значение выражения больше, чем доступное количество итераций, то итерация не выполняется.
Count Completed Branches Only (дополнительно). Если этот флажок установлен, то при выполнении учитываются только завершенные ветви. Если этот флажок не установлен, то будут учтены все ветви, как выполненные, так и не выполненные.
Использование элемента "Pick"
Элемент "Pick" блокирует процесс и ожидает, пока не произойдет одно из указанных событий. После того, как указанное событие происходит, выполняется связанное с этим событием действие. Возможными событиями являются поступления сообщений или оповещений на основе таймера. Возникновение событий является взаимоисключающим. Если происходит несколько событий, то выбор действия для выполнения зависит от того, какое событие произошло первым.
Действие "Pick" предоставляет две ветви, "On Message" и "On Alarm". Выполняется та ветвь, условие для которой удовлетворено первым (т.е. получено сообщение или истекло время таймера). При добавлении элемента "Pick" к диаграмме автоматически вставляется один оператор "On Message", в котором необходимо указать свойства сообщения, ожидаемого процессом от партнерской службы. Каждый элемент "Pick" должен содержать по крайней мере один оператор "On Message". Ветвь "On Alarm" содержит таймер, с помощью которого можно указать, как долго процесс должен находиться в состоянии ожидания.
Использование
В режиме проектирования перетащите элемент "Pick" из окна "Palette" в диаграмму.
Для ветви "On Message" настройте свойства сообщения, ожидаемого процессом. Настройка аналогична настройке элемента Usage.
Из окна "Palette" перетащите действие, которое будет выполняться, и поместите его в ветвь "On Message". Настройте свойства действия.
(Дополнительно) Добавьте другие ветви "On Message", выбрав из контекстного меню "Add > On Message", и настройте их, как описано выше.
(Дополнительно) Добавьте одну или несколько ветвей "On Alarm" в соответствии с описанной ниже процедурой.
Добавление ветви "On Alarm"
Щелкните правой кнопкой мыши элемент "Pick" и выберите из контекстного меню "Add > On Alarm".
Настройте таймер через окно "Properties", для вызова которого щелкните правой кнопкой мыши элемент и выберите "Properties". Доступные варианты:
Alarm Type – используется для выбора типа оповещения. Тип может быть одним из следующих:
For – указывает для процесса продолжительность ожидания.
Until – указывает для процесса срок завершения.
For/Until – используется для настройки срока завершения или продолжительности для выбранного типа оповещения. Для указания времени нажмите кнопку с многоточием (...). Можно также использовать BPEL Mapper.
Найдите действие, которое необходимо выполнить после истечения времени, и перетащите его из окна "Palette" в метку-заполнитель в элементе "On Alarm".
(Дополнительно) Добавьте одну или несколько ветвей "On Alarm", как описано выше.
Свойства элемента "Pick"
Окно "Properties" элемента "Pick", для вызова которого необходимо щелкнуть правой кнопкой мыши элемент и выбрать "Properties", содержит следующие поля:
Create Instance. Если в нем установлено yes, то при наступлении указанного события будет создан новый экземпляр процесса. Если запуск нового экземпляра процесса не планируется, следует сохранить значение по умолчанию N/A.
Name. Используется для указания имени элемента.
Использование элемента "Flow"
Элемент "Flow" используется для определения набора действий, которые будут выполняться одновременно (параллельно).
Действие "Flow" является структурированным действием, содержащим другие действия, разделенные на отдельные пути управления или ветви. В действие можно встроить любое необходимое количество путей, и все они будут выполняться одновременно.
Во время выполнения каждый путь выполняется параллельно, а действия на каждом пути выполняются в порядке появления, если только они не являются источником ссылки. Когда действия являются источником ссылки, необходимо вычислить условие ссылки и условие объединения действия. Если условия ссылки, которые ведут к действию, конфликтуют с условиями его объединения, это действие исключается.
Использование
В режиме проектирования перетащите элемент "Flow" из окна "Palette" в диаграмму.
Перетащите элемент к метке-заполнителю внутри элемента "Flow". При добавлении еще одного элемента в ту же самую ветвь элемента "Flow" в качестве обертки для элементов внутри ветви автоматически используется элемент "Sequence".
Добавление ветвей к элементу "Flow"
К элементу "Flow" можно добавить одну или несколько ветвей. Элемент "Flow" обладает особым стилем взаимодействия с пользователем. Он всегда предоставляет метку-заполнитель для следующей ветви перехода, которую, возможно, потребуется добавить. Для добавления новой ветви перетащите элемент из окна "Palette" непосредственно к доступной метке-заполнителю "следующей ветви".
Изменение порядка следования элементов в потоке
Для изменения порядка следования действий в элементе "Flow":
В режиме проектирования щелкните правой кнопкой мыши элемент "Flow" и выберите "Change Order".
Выберите элемент и с помощью кнопок "Move up" и "Move down" измените позицию элемента внутри контейнера.
Использование элемента "Sequence"
Для вложения нескольких действий в процесс можно использовать элемент "Sequence". Действия внутри последовательности выполняются строго последовательно. После завершения последнего вложенного действия выполнение процесса возвращается к бизнес-процессу.
Использование
Перетащите элемент "Sequence" из окна "Palette" в диаграмму.
Добавление в последовательность дочерних действий
В последовательность можно добавить одно или несколько дочерних действий. Элемент "Sequence" обладает особым стилем взаимодействия с пользователем. Он всегда предоставляет одну или несколько допустимых меток-заполнителей для следующего действия, которое, возможно, потребуется добавить. Для добавления нового дочернего действия перетащите элемент из окна "Palette" на непосредственно доступную следующую или предыдущую метку-заполнитель действия.
Изменение порядка следования элементов в последовательности
Для изменения порядка следования действий в элементе "Sequence":
В режиме проектирования щелкните правой кнопкой мыши элемент "Sequence" и выберите "Change Order".
Выберите элемент и с помощью кнопок "Move up" и "Move down" измените позицию элемента внутри контейнера.
Использование элемента "Scope"
Действие "Scope" по существу является набором дочерних действий, у которых могут быть свои собственные переменные, обработчики сбоев и событий, а также и наборы корреляций. Действие "Scope" предоставляет для дочерних элементов контекст поведения. Атрибуты, определенные для родительского действия "Scope", имеют внутри этого "Scope" локальную видимость. Например, переменные, объявленные для элемента "Scope", видимы только в этом элементе "Scope" и во всех вложенных элементах "Scopes". Эти переменные могут использоваться и для дочерних действий данного действия "Scope".
Использование
В режиме проектирования перетащите элемент "Scope" из окна "Palette" в диаграмму.
Щелкните правой кнопкой мыши элемент и выберите в контекстном меню "Add" для добавления следующего:
В режиме проектирования перетащите элементы из окна "Palette" и поместите их внутрь элемента "Scope".
Настройте элементы.
(Дополнительно) Укажите имя элемента "Scope" в окне "Properties", для вызова которого необходимо щелкнуть правой кнопкой мыши элемент и выбрать "Properties".
Переменные
Переменные в программировании BPEL функционируют точно так же, как в других языках программирования: они хранят временные значения, формируют части выражений или передаются как параметры внешним партнерам. Как правило, для каждого сообщения, переданного или полученного от партнерской службы, необходима переменная. BPEL Designer поддерживает следующие типы переменных:
Тип сообщения WSDL. Эти переменные соответствуют типам сообщений веб-службы, которые определены в файлах WSDL, импортированных процессом. В файле BPEL (.bpel) эти переменные должны указывать значение для атрибута messageType. Переменные типа сообщения используются для хранения данных при взаимодействии процесса и партнерских служб.
Тип схемы XML. Эти переменные соответствуют простому или составному типу данных схемы XML. Сами типы схемы XML определены в файлах схемы XML (.xsd) или в файлах WSDL, импортированных в процесс. В файле BPEL переменные этого типа должны указывать значение для атрибута type.
Элемент схемы XML. Эти переменные соответствуют элементам схемы XML. Сами элементы схемы XML определены в файлах схемы XML (.xsd) или в файлах WSDL, импортированных в процесс. В файле BPEL переменные этого типа должны указывать значение для атрибута element.
Встроенный тип. Переменные этого типа являются переменными стандартных простых типов, определенных в спецификации схемы XML.
Глобальные и локальные переменные
Переменные, определенные в корне процесса, являются глобальными переменными, имеющими глобальную видимость во всем процессе. Переменные, определенные внутри отдельного элемента "Scope", видимы только внутри этого "Scope" и всех вложенных элементов "Scope". Такие переменные называются локальными переменными. Переменная, определенная для внутреннего элемента "Scope", может скрыть определенную выше переменную с тем же самым именем.
Имя переменной должно быть уникальным среди имен всех переменных, определенных внутри одного и того же элемента "Scope".
Определение переменной
Щелкните правой кнопкой мыши элемент "Process" или "Scope" и выберите "Add > Variable".
В диалоговом окне "Create New Variable" присвойте переменной имя. Имя должно быть уникальным внутри этого элемента "Scope".
Разверните узел, соответствующий типу новой переменной, и выберите тип. Имеются следующие варианты:
Built-in Types. Разверните узел "Built-in Types", выберите имя типа и нажмите OK.
Message Type. Разверните узел файла .wsdl, выберите тип сообщения и нажмите кнопку OK.
XML Schema. Разверните узел файла .xsd или файл .wsdl, содержащий встроенную схему. Разверните узлы "Global Complex Type", "Global Simple Type" или "Global Elements Simple", выберите соответствующий тип и нажмите OK.
Для удобства глобальные типы переменных выделены полужирным шрифтом.
(Дополнительно) Отмените выбор флажка "Show Imported Files Only" для просмотра содержимого неимпортированного файла WSDL и файлов схемы XML.
Нажмите кнопку "OK".
По умолчанию диалоговое окно "Create New Variable" отображает только те файлы, которые уже были использованы в процессе. Однако проект может содержать другие файлы WSDL и XSD, которые еще не были импортированы в процесс. При выборе типа для новой переменной, определенной в не импортированном файле, среда IDE автоматически добавит в процесс BPEL требуемый импорт.
Можно также добавить переменные из окна Navigator. Для добавления переменной выберите в окне "Navigator" логический вид BPEL, разверните узел проекта модуля BPEL, щелкните правой кнопкой мыши узел "Variables" и выберите "Add Variable".
Изменение переменной
В окне "Navigator" выберите "BPEL Logical View".
Разверните узел проекта модуля BPEL, выберите "Variables" и дважды щелкните переменную, которую необходимо изменить.
В диалоговом окне редактора свойств для переменной измените тип и имя переменной.