Учебники

BPEL — Краткое руководство

BPEL — Введение

SOA или сервис-ориентированная архитектура — это архитектурный подход, который использует технологию для представления бизнес-процессов в качестве повторно используемых сервисов.

  • Он ориентирован на бизнес и позволяет переходить на новый уровень интеграции, визуализации, мониторинга и оптимизации.

  • Это не технология, это концепция и стратегия использования технологий для создания решений для автоматизации бизнеса.

Он ориентирован на бизнес и позволяет переходить на новый уровень интеграции, визуализации, мониторинга и оптимизации.

Это не технология, это концепция и стратегия использования технологий для создания решений для автоматизации бизнеса.

Теперь посмотрим, что такое BPEL и как он помогает в SOA.

Что такое BPEL?

Business Process Engineering Language — это технология, используемая для создания программ в архитектуре SOA.

Добавление компонента обслуживания процесса BPEL

Выполните следующие действия для добавления компонента службы процесса BPEL —

  • В Навигаторе приложений выберите Файл> Создать> Приложения> Приложение SOA.

  • Запустится мастер создания приложения SOA.

  • В диалоговом окне «Имя приложения» введите имя приложения в поле «Имя приложения».

  • В поле Каталог введите путь к каталогу, в котором нужно создать составное приложение и проект SOA.

  • Нажмите кнопку «Далее.

  • В диалоговом окне «Имя проекта» введите имя в поле «Имя проекта».

  • Нажмите кнопку «Далее.

  • В диалоговом окне «Параметры проекта SOA» выберите «Составить с процессом BPEL».

  • Нажмите Готово.

В Навигаторе приложений выберите Файл> Создать> Приложения> Приложение SOA.

Запустится мастер создания приложения SOA.

В диалоговом окне «Имя приложения» введите имя приложения в поле «Имя приложения».

В поле Каталог введите путь к каталогу, в котором нужно создать составное приложение и проект SOA.

Нажмите кнопку «Далее.

В диалоговом окне «Имя проекта» введите имя в поле «Имя проекта».

Нажмите кнопку «Далее.

В диалоговом окне «Параметры проекта SOA» выберите «Составить с процессом BPEL».

Нажмите Готово.

Файлы в BPEL Composite

Композит BPEL содержит следующие файлы:

  • Composite.xml — этот файл описывает всю составную сборку служб, компонентов служб, ссылок и проводов.

  • .bpel — Этот файл содержит набор действий, добавленных в процесс.

  • .componentType — этот файл описывает службы и ссылки для компонента службы процесса BPEL.

  • .wsdl — этот файл определяет входные и выходные сообщения для этого потока процесса BPEL, поддерживаемый клиентский интерфейс и операции и другие функции.

Composite.xml — этот файл описывает всю составную сборку служб, компонентов служб, ссылок и проводов.

.bpel — Этот файл содержит набор действий, добавленных в процесс.

.componentType — этот файл описывает службы и ссылки для компонента службы процесса BPEL.

.wsdl — этот файл определяет входные и выходные сообщения для этого потока процесса BPEL, поддерживаемый клиентский интерфейс и операции и другие функции.

Файлы в BPEL Composite

Концепции, используемые в процессе BPL

В этом разделе мы изучим различные концепции, вовлеченные в процесс BPL.

оркестровка

    Обычно используется в частных бизнес-процессах.

  • Центральный процесс (который может быть другим веб-сервисом) берет на себя управление вовлеченными веб-сервисами.

  • Координирует выполнение различных операций на веб-службах, участвующих в операции.

  • Вовлеченные веб-службы не «знают» (и не должны знать), что они вовлечены в процесс компоновки и что они принимают участие в бизнес-процессе более высокого уровня.
  • Только центральный координатор оркестровки знает об этой цели, поэтому оркестровка централизована с явными определениями операций и порядком вызова Web-сервисов.

Центральный процесс (который может быть другим веб-сервисом) берет на себя управление вовлеченными веб-сервисами.

Координирует выполнение различных операций на веб-службах, участвующих в операции.

Только центральный координатор оркестровки знает об этой цели, поэтому оркестровка централизована с явными определениями операций и порядком вызова Web-сервисов.

оркестровка

Хореография

  • Не полагается на центрального координатора.

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

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

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

Не полагается на центрального координатора.

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

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

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

Хореография

BPEL — Деятельность

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

Oracle BPEL Designer включает в себя набор действий, которые вы перетаскиваете в компонент службы процесса BPEL и дважды щелкаете действие, чтобы определить его атрибуты и значения свойств.

Назначить активность

Назначить активность Операция присвоения позволяет манипулировать данными, например копировать содержимое одной переменной в другую.

Вызвать активность

Логотип Invoke Activity Активность вызова позволяет вам вызывать сервис (идентифицируемый по его партнерской ссылке) и указывать операцию, которую должен выполнить этот сервис.

Получить активность

Получить активность Операция получения ожидает ответного сообщения асинхронного обратного вызова от службы.

Давайте узнаем больше о деятельности Invoke в нашем следующем разделе.

Вызвать активность

Активность invoke позволяет указать операцию, которая должна быть вызвана для сервиса (идентифицируется по его партнерской ссылке). Операция может быть односторонней или запрос-ответ на порте, предоставленном сервисом. Переменные могут быть автоматически созданы в действии invoke. Операция вызова вызывает синхронную службу или инициирует асинхронную веб-службу.

Операция invoke открывает в процессе порт для отправки и получения данных. Этот порт может в дальнейшем использоваться для отправки необходимых данных и получения ответа. Для синхронных обратных вызовов требуется только один порт для функций отправки и получения.

Вызвать активность

BPEL — партнерская ссылка в процессе BPEL

Партнерские ссылки определяются как обмен информацией между всеми сторонами, с которыми взаимодействует процесс BPEL.

Это ссылки на реальные реализации, посредством которых процесс BPEL взаимодействует с внешним миром.

Привлеченные партнерские ссылки

Это ссылки на сервисы, которые вызываются процессом BPEL.

Ссылки партнера-клиента

Это ссылки на сервисы, которые могут вызывать процесс BPEL.

Свойства партнерской ссылки

Редактор свойств партнерских ссылок позволяет вам устанавливать партнерские ссылки для ваших процессов BPEL. С помощью редактора свойств партнерской ссылки вы можете указать следующее:

  • Имя — указывает имя элемента Invoke.

  • Файл WSDL — указывает файл WSDL, связанный с партнерской ссылкой.

  • Тип партнерской ссылки — указывает тип партнерской ссылки, определенный в WSDL.

  • Моя роль — указывает на роль самого бизнес-процесса.

  • Партнерский полюс — указывает на роль партнера.

  • Документация — Доступ к окну Свойства.

Имя — указывает имя элемента Invoke.

Файл WSDL — указывает файл WSDL, связанный с партнерской ссылкой.

Тип партнерской ссылки — указывает тип партнерской ссылки, определенный в WSDL.

Моя роль — указывает на роль самого бизнес-процесса.

Партнерский полюс — указывает на роль партнера.

Документация — Доступ к окну Свойства.

Партнерские ссылки определены в файле .bpel.

BPEL может взаимодействовать со службами следующими тремя способами:

  • Сервисы, которые вызывают процесс BPEL
  • Сервисы, которые вызываются процессом BPEL
  • Услуги, которые действуют в обе стороны

BPEL — Создание партнерской ссылки

В этой главе мы узнаем, как создать партнерскую ссылку.

Выполните шаги, показанные ниже, чтобы создать партнерскую ссылку —

  • В составном редакторе SOA дважды щелкните компонент службы процесса BPEL.

  • При нажатии на компонент службы отображается Oracle BPEL Designer.

  • В палитре компонентов разверните BPEL Services.

В составном редакторе SOA дважды щелкните компонент службы процесса BPEL.

При нажатии на компонент службы отображается Oracle BPEL Designer.

В палитре компонентов разверните BPEL Services.

Создать партнерскую ссылку

  • Перетащите партнерскую ссылку в соответствующую дорожку партнерских ссылок.

  • Заполните поля для этого диалога, как указано выше в Свойствах партнерских ссылок.

Перетащите партнерскую ссылку в соответствующую дорожку партнерских ссылок.

Заполните поля для этого диалога, как указано выше в Свойствах партнерских ссылок.

BPEL — Адаптеры

Адаптеры позволяют интегрировать компонент службы процессов BPEL с доступом к файловым системам, FTP-серверам, таблицам баз данных, очередям баз данных, сокетам, Java Message Services (JMS), MQ и Oracle E-Business Suite. Этот мастер позволяет настроить типы адаптеров, показанные на рисунке ниже, для использования с компонентом службы процесса BPEL —

Типы адаптеров

На следующем рисунке показаны различные типы адаптеров —

Типы адаптеров

Расширенный Очередь (AQ)

Для взаимодействия с очередью. AQ предоставляет гибкий механизм для двунаправленной асинхронной связи между участвующими приложениями.

Oracle Business Activity Monitoring (BAM)

Для публикации данных в объектах данных на сервере Oracle BAM.

База данных

Для взаимодействия с базами данных Oracle и не-Oracle через JDBC и Oracle Business Intelligence (который является специальным типом источника данных).

FTP и файл

Для обмена файлами (чтение и запись) в локальных файловых системах и удаленных файловых системах (с использованием протокола передачи файлов (FTP)).

Служба сообщений Java (JMS)

Для взаимодействия с JMS. Архитектура JMS использует один клиентский интерфейс для архитектуры многих серверов обмена сообщениями.

Очередь сообщений (MQ)

Для обмена сообщениями с системами очередей WebSphere MQ.

Приложения Oracle

Для взаимодействия с набором интегрированных бизнес-приложений Oracle Application.

Oracle B2B

Для просмотра метаданных B2B в хранилище метаданных (MDS) и выбора определений документов.

Розетки

Для моделирования стандартных или нестандартных протоколов для связи через сокеты TCP / IP.

Название сервиса адаптера

В окне «Имя службы» предлагается ввести имя, когда в поддоне выбран тип адаптера. Для этого примера был выбран File Adapter . После завершения работы мастера файл WSDL с этим именем службы появляется в навигаторе приложений для компонента службы процесса BPEL (в данном примере с именем ReadFile.wsdl ). Название сервиса должно быть уникальным в рамках проекта. Этот файл конфигурации содержит параметры конфигурации адаптера, указанные в этом мастере. Другие файлы конфигурации (такие как заголовочные файлы и файлы, специфичные для адаптера) также создаются. Эти файлы отображаются в навигаторе приложений.

Название сервиса адаптера

BPEL — Мониторы процессов

Мониторы процессов BPEL в Oracle BPEL Designer можно настроить, выбрав Monitor в верхней части Oracle BPEL Designer.

Мониторы процессов

На этом этапе необходимо настроить адаптер Oracle BAM.

BPEL — односторонние сообщения

Клиентский процесс BPEL отправляет сообщение в сервисный процесс BPEL, и сервисный процесс BPEL не обязан отвечать, как показано на рисунке ниже:

Односторонние сообщения

  • Клиентскому процессу BPEL требуется действующая партнерская ссылка и операция вызова.

  • Сервис BPEL Process нуждается в операции получения.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

Клиентскому процессу BPEL требуется действующая партнерская ссылка и операция вызова.

Сервис BPEL Process нуждается в операции получения.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

<wsdl:portType name = "BPELProcess">
   <wsdl:operation name = "process">
      <wsdl:input message = "client:BPELProcessRequestMessage" />
      <wsdl:output message = "client:BPELProcessResponseMessage"/>
   </wsdl:operation>
</wsdl:portType>

BPEL — Синхронные взаимодействия

Процесс BPEL клиента отправляет запрос процессу BPEL службы (d1 на рисунке ниже) и получает немедленный ответ (d2 на рисунке ниже). Например, пользователь запрашивает подписку на онлайн-заявку для поступления в колледж и сразу же получает подтверждение по электронной почте о том, что его запрос принят.

Синхронные взаимодействия

  • Клиентский процесс BPEL нуждается в действии вызова. Порт на стороне клиента отправляет запрос и получает ответ.

  • Для процесса BPEL службы требуется действие приема для приема входящего запроса и действие ответа для возврата либо запрошенной информации, либо сообщения об ошибке (ошибка; f1 на рисунке ниже), определенной в WSDL.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

Клиентский процесс BPEL нуждается в действии вызова. Порт на стороне клиента отправляет запрос и получает ответ.

Для процесса BPEL службы требуется действие приема для приема входящего запроса и действие ответа для возврата либо запрошенной информации, либо сообщения об ошибке (ошибка; f1 на рисунке ниже), определенной в WSDL.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

Файл WSDL

<wsdl:portType name = "BPELProcess">
   <wsdl:operation name = "process">
      <wsdl:input message = "client:BPELProcessRequestMessage" />
      <wsdl:output message = "client:BPELProcessResponseMessage"/>
   </wsdl:operation>
</wsdl:portType>

BPEL — асинхронные взаимодействия

Процесс BPEL клиента отправляет запрос процессу BPEL службы (d1 на рисунке, приведенном ниже) и ожидает ответа службы (d2 на рисунке, представленном ниже).

Например, пользователь запрашивает подписку на онлайн-заявку для поступления в колледж, и запрос не может быть подтвержден, если он не принят в приемной комиссии.

Асинхронные взаимодействия

  • Клиентскому процессу BPEL требуется операция вызова для отправки запроса и операция получения для получения ответа.

  • Процесс BPEL службы нуждается в операции приема для приема входящего запроса и операции вызова для возврата запрошенной информации или ошибки.

    Примечание . Разница между ответом синхронного и асинхронного BPEL-процесса заключается в том, что синхронный сервис использует ответное действие для ответа клиенту, а асинхронный сервис использует действие вызова.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

Клиентскому процессу BPEL требуется операция вызова для отправки запроса и операция получения для получения ответа.

Процесс BPEL службы нуждается в операции приема для приема входящего запроса и операции вызова для возврата запрошенной информации или ошибки.

Примечание . Разница между ответом синхронного и асинхронного BPEL-процесса заключается в том, что синхронный сервис использует ответное действие для ответа клиенту, а асинхронный сервис использует действие вызова.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие. Файл WSDL показан ниже.

Файл WSDL

<wsdl:portType name = "BPELProcess">
   <wsdl:operation name = "process">
      <wsdl:input message = "client:BPELProcessRequestMessage"/>
   </wsdl:operation>
</wsdl:portType>

<wsdl:portType name = "BPELProcessCallback">
   <wsdl:operation name = "processResponse">
      <wsdl:input message = "client:BPELProcessResponseMessage"/>
   </wsdl:operation>
</wsdl:portType>

Асинхронные взаимодействия с таймаутом

Процесс BPEL клиента отправляет запрос процессу BPEL службы (d1 на рисунке ниже) и ожидает ответа службы или до достижения определенного временного предела, в зависимости от того, что наступит раньше. (d2 на рисунке ниже).

Например, пользователь запрашивает подписку на онлайн-заявку для поступления в колледж, и запрос отменяется, если пользователь не получает подтверждающего ответа в течение определенного периода времени.

Асинхронные взаимодействия с таймаутом

Клиентскому процессу BPEL требуется операция вызова для отправки запроса и операция выбора с двумя ветвями — веткой onMessage и веткой onAlarm . Если ответ приходит после истечения срока, сообщение отправляется в очередь недоставленных сообщений.

Процесс BPEL службы нуждается в операции приема для приема входящего запроса и операции вызова для возврата запрошенной информации или ошибки.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Асинхронные взаимодействия с таймером уведомлений

В этой главе мы узнаем об асинхронных взаимодействиях с таймером уведомлений. Рассмотрим следующие моменты, связанные с асинхронными взаимодействиями:

  • Процесс BPEL клиента отправляет запрос процессу BPEL службы и ожидает ответа, хотя уведомление отправляется после истечения таймера.

  • Процесс BPEL клиента продолжает ожидать ответа от процесса BPEL службы даже после истечения таймера.

  • Клиентскому процессу BPEL требуется действие области действия, содержащее действие вызова для отправки запроса и действие получения для принятия ответа. У обработчика onAlarm действия области действия есть ограничение по времени и инструкции о том, что делать, когда истекает время таймера.

  • Например, подождите 60 секунд, затем отправьте предупреждение, указывающее, что процесс занимает больше времени, чем ожидалось.

  • Процесс BPEL службы нуждается в операции приема для приема входящего запроса и операции вызова для возврата запрошенной информации или ошибки.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Процесс BPEL клиента отправляет запрос процессу BPEL службы и ожидает ответа, хотя уведомление отправляется после истечения таймера.

Процесс BPEL клиента продолжает ожидать ответа от процесса BPEL службы даже после истечения таймера.

Клиентскому процессу BPEL требуется действие области действия, содержащее действие вызова для отправки запроса и действие получения для принятия ответа. У обработчика onAlarm действия области действия есть ограничение по времени и инструкции о том, что делать, когда истекает время таймера.

Например, подождите 60 секунд, затем отправьте предупреждение, указывающее, что процесс занимает больше времени, чем ожидалось.

Процесс BPEL службы нуждается в операции приема для приема входящего запроса и операции вызова для возврата запрошенной информации или ошибки.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Таймер асинхронных взаимодействий

BPEL — один запрос, несколько ответов

В этой главе мы узнаем о концепции одного запроса и нескольких ответов.

  • Процесс BPEL клиента отправляет один запрос процессу BPEL службы и получает несколько ответов в ответ.

    Например, запросом может быть заказ товара через Интернет, и первым ответом может быть предполагаемое время доставки, вторым ответом будет подтверждение платежа, а третьим ответом будет уведомление о том, что товар отправлен. В этом примере ожидается количество и типы ответов.

  • Клиентскому процессу BPEL требуется операция вызова для отправки запроса и операция последовательности с тремя операциями получения.

  • Для процесса BPEL службы требуется действие приема для приема сообщения от клиента и атрибут последовательности с тремя действиями вызова, по одному для каждого ответа.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Процесс BPEL клиента отправляет один запрос процессу BPEL службы и получает несколько ответов в ответ.

Например, запросом может быть заказ товара через Интернет, и первым ответом может быть предполагаемое время доставки, вторым ответом будет подтверждение платежа, а третьим ответом будет уведомление о том, что товар отправлен. В этом примере ожидается количество и типы ответов.

Клиентскому процессу BPEL требуется операция вызова для отправки запроса и операция последовательности с тремя операциями получения.

Для процесса BPEL службы требуется действие приема для приема сообщения от клиента и атрибут последовательности с тремя действиями вызова, по одному для каждого ответа.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Один запрос и несколько ответов

Один запрос, один из двух возможных ответов

В этой главе мы узнаем о концепции одного запроса и одного из двух возможных ответов.

  • Процесс BPEL клиента отправляет один запрос процессу BPEL службы и получает один из двух возможных ответов.

    Например, запросом может быть заказ товара через Интернет, а первым ответом может быть либо сообщение о наличии на складе, либо сообщение об отсутствии на складе.

  • Клиентскому процессу BPEL необходимо следующее:

    • Активность вызова для отправки запроса.

    • Операция выбора с двумя ветвями: одно onMessage для ответа на складе и инструкции о том, что делать, если получено сообщение на складе.

    • Второе onMessage для ответа об отсутствии на складе и инструкций о том, что делать, если получено сообщение об отсутствии на складе.

  • Для процесса BPEL службы требуется действие приема для приема сообщения от клиента и действие переключения с двумя ветвями: одно с действием вызова, отправляющее сообщение на складе, если элемент доступен, и второе отделение с отправкой действия вызова сообщение об отсутствии на складе, если товар недоступен.

Процесс BPEL клиента отправляет один запрос процессу BPEL службы и получает один из двух возможных ответов.

Например, запросом может быть заказ товара через Интернет, а первым ответом может быть либо сообщение о наличии на складе, либо сообщение об отсутствии на складе.

Клиентскому процессу BPEL необходимо следующее:

Активность вызова для отправки запроса.

Операция выбора с двумя ветвями: одно onMessage для ответа на складе и инструкции о том, что делать, если получено сообщение на складе.

Второе onMessage для ответа об отсутствии на складе и инструкций о том, что делать, если получено сообщение об отсутствии на складе.

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

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Два возможных ответа

Один запрос, обязательный ответ и необязательный ответ

В этой главе мы поймем концепцию одного запроса, обязательного ответа и необязательного ответа.

  • Клиентская служба BPEL отправляет один запрос процессу BPEL службы и получает один или два ответа.

  • Здесь просьба заказать товар онлайн. Если продукт задерживается, служба отправляет сообщение, информирующее клиента. В любом случае, сервис всегда отправляет уведомление при отправке товара.

  • Клиентской службе BPEL требуется действие области действия, содержащее действие вызова для отправки запроса, и действие получения для принятия обязательного ответа. Для необязательного сообщения устанавливается обработчик onMessage действия области вместе с инструкциями о том, что делать, если получено необязательное сообщение (например, уведомляет вас о задержке продукта). Клиентский процесс BPEL ожидает получения обязательного ответа. Если обязательный ответ получен первым, процесс BPEL продолжается, не дожидаясь необязательного ответа.

  • Для процесса BPEL службы требуется действие области действия, содержащее действие получения и действие вызова для отправки сообщения обязательной доставки, и обработчик onAlarm области для отправки необязательного отложенного сообщения, если истекает таймер (например, отправка отложенного сообщения, если элемент не отправлен в течение 24 часов).

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Клиентская служба BPEL отправляет один запрос процессу BPEL службы и получает один или два ответа.

Здесь просьба заказать товар онлайн. Если продукт задерживается, служба отправляет сообщение, информирующее клиента. В любом случае, сервис всегда отправляет уведомление при отправке товара.

Клиентской службе BPEL требуется действие области действия, содержащее действие вызова для отправки запроса, и действие получения для принятия обязательного ответа. Для необязательного сообщения устанавливается обработчик onMessage действия области вместе с инструкциями о том, что делать, если получено необязательное сообщение (например, уведомляет вас о задержке продукта). Клиентский процесс BPEL ожидает получения обязательного ответа. Если обязательный ответ получен первым, процесс BPEL продолжается, не дожидаясь необязательного ответа.

Для процесса BPEL службы требуется действие области действия, содержащее действие получения и действие вызова для отправки сообщения обязательной доставки, и обработчик onAlarm области для отправки необязательного отложенного сообщения, если истекает таймер (например, отправка отложенного сообщения, если элемент не отправлен в течение 24 часов).

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Дополнительный ответ

BPEL — Частичная обработка

Теперь мы изучим концепцию частичной обработки в BPEL.

  • Процесс BPEL клиента отправляет запрос процессу BPEL службы и получает немедленный ответ, но обработка продолжается на стороне службы.

  • Этот шаблон также может включать в себя несколько обратных вызовов, с последующей длительной обработкой.

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

  • Клиентскому процессу BPEL требуется действие вызова для каждого запроса и действие приема для каждого ответа для асинхронных транзакций или просто действие вызова для каждой синхронной транзакции.

  • Процесс BPEL службы нуждается в операции приема для каждого запроса от клиента и в операции вызова для каждого ответа. Как только ответы завершены, процесс BPEL службы, как служба, может продолжить обработку, используя информацию, собранную в транзакции, для выполнения необходимых задач без какого-либо дополнительного ввода со стороны клиента.

  • Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Процесс BPEL клиента отправляет запрос процессу BPEL службы и получает немедленный ответ, но обработка продолжается на стороне службы.

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

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

Клиентскому процессу BPEL требуется действие вызова для каждого запроса и действие приема для каждого ответа для асинхронных транзакций или просто действие вызова для каждой синхронной транзакции.

Процесс BPEL службы нуждается в операции приема для каждого запроса от клиента и в операции вызова для каждого ответа. Как только ответы завершены, процесс BPEL службы, как служба, может продолжить обработку, используя информацию, собранную в транзакции, для выполнения необходимых задач без какого-либо дополнительного ввода со стороны клиента.

Как и во всех партнерских действиях, файл языка описания веб-служб (WSDL) определяет взаимодействие.

Частичная обработка

BPEL — множественные взаимодействия приложений

Мы узнаем о множественных взаимодействиях приложений с BPEL в этой главе.

  • Когда в транзакции участвует более двух приложений.

  • Этот шаблон транзакции A-to-B-to-C-A может обрабатывать много транзакций одновременно. Следовательно, необходим механизм для отслеживания того, какое сообщение куда идет.

  • Это может быть обработано с использованием WS-Addressing или наборов корреляции.

Когда в транзакции участвует более двух приложений.

Этот шаблон транзакции A-to-B-to-C-A может обрабатывать много транзакций одновременно. Следовательно, необходим механизм для отслеживания того, какое сообщение куда идет.

Это может быть обработано с использованием WS-Addressing или наборов корреляции.

Взаимодействие с несколькими приложениями

BPEL — вызов синхронной веб-службы

В одной из предыдущих глав мы обсуждали, что это Синхронный веб-сервис, который обеспечивает немедленный ответ на вызов.

На снимке экрана, показанном ниже, мы создали синхронный процесс BPEL, который выполняет операцию приема, чтобы принять запрос от пользователя. Ответное действие одновременно отправляет ответ обратно.

Вызов синхронного веб-сервиса

Вызов асинхронной веб-службы

Как обсуждалось ранее, асинхронный веб-сервис — это тот, который отправляет запрос другому веб-сервису и ожидает ответа.

На снимке экрана, показанном ниже, мы создали асинхронный процесс BPEL, который выполняет операцию приема, чтобы принять запрос от пользователя. Операция присвоения далее присваивает значения различным элементам в запросе.

Затем действие invoke вызывает приложение HelloWorld, которое одновременно отправляет ответ и фиксируется в действии приема.

Кроме того, у нас есть функция обратного вызова, которая в итоге генерирует выходные данные и отправляет ответ асинхронно.

Если вы дважды щелкните на receiveInput или callbackClient , вы увидите, что у каждого из них есть только одна переменная.

 receiveInput → inputVariable
 callbackClient → outputVariable 

Вызов асинхронной веб-службы

BPEL — Использование параллельного потока

В этой главе мы поймем, как работает параллельный поток в BPEL.

Что такое Flow Activity?

Операция потока обычно содержит много операций последовательности, и каждая последовательность выполняется параллельно. Операция потока также может содержать другие операции.

Например, два асинхронных обратных вызова выполняются параллельно, поэтому один обратный вызов не должен ждать, пока другой завершится первым. Каждый ответ хранится в отдельной глобальной переменной.

В действии потока код BPEL определяет количество параллельных ветвей. Однако часто количество требуемых филиалов отличается в зависимости от доступной информации.

Поток Активность

Что такое FlowN Activity?

Деятельность flowN создает несколько потоков, равных значению N, которое определяется во время выполнения на основе доступных данных и логики процесса. При каждом создании новой ветви происходит приращение переменной индекса до тех пор, пока переменная индекса не достигнет значения N.

Операция flowN выполняет действия с произвольным числом элементов данных. По мере изменения количества элементов процесс BPEL корректируется соответствующим образом.

Ветви, созданные flowN, выполняют те же действия, но используют разные данные. Каждая ветвь использует переменную индекса для поиска входных переменных. Переменная индекса может использоваться в выражении XPath для получения данных, специфичных для этой ветви.

FlowN Activity

BPEL — Использование условного ветвления

BPEL применяет логику для выбора через условное ветвление. Два различных действия, основанные на условном ветвлении, показаны ниже —

Переключить активность

В этом методе вы устанавливаете две или более ветвей, каждая из которых имеет форму выражения XPath. Если выражение истинно, то ветвь выполняется. Если выражение ложно, то процесс BPEL переходит к следующему условию ветвления, пока он не найдет действительное условие ветвления, не встретит ветвь в противном случае или не исчерпает ветвления. Если выполняется более одного условия ветвления, то BPEL выполняет первую истинную ветвь.

Пока деятельность

Вы можете использовать операцию while для создания цикла while для выбора между двумя действиями.

Условное ветвление

BPEL — Использование обработки ошибок

Чтобы понять, как использовать обработку ошибок, нам нужно изучить базовую архитектуру Service Composite в Oracle SOA Suite.

  • Сервисные компоненты — процессы BPEL, бизнес-правило, человеческая задача, посредник. Они используются для создания составного приложения SOA.

  • Связующие компоненты — установите связь между SOA-композитом и внешним миром.

  • Сервисы — предоставляет точку входа в составное приложение SOA.

  • Связывание — определяет протоколы, которые связываются со службой, такие как SOAP / HTTP, адаптер JCA и т. Д.

  • WSDL — Определяет определение сервиса веб-сервиса.

  • Ссылки: позволяет составному приложению SOA отправлять сообщения внешним службам.

  • Провода — Включает соединение между сервисными компонентами.

Сервисные компоненты — процессы BPEL, бизнес-правило, человеческая задача, посредник. Они используются для создания составного приложения SOA.

Связующие компоненты — установите связь между SOA-композитом и внешним миром.

Сервисы — предоставляет точку входа в составное приложение SOA.

Связывание — определяет протоколы, которые связываются со службой, такие как SOAP / HTTP, адаптер JCA и т. Д.

WSDL — Определяет определение сервиса веб-сервиса.

Ссылки: позволяет составному приложению SOA отправлять сообщения внешним службам.

Провода — Включает соединение между сервисными компонентами.

Типы неисправностей

Давайте теперь посмотрим на различные типы неисправностей.

Недостатки бизнеса

Происходит, когда приложение выполняет действие THROW или INVOKE получает ошибку в качестве ответа. Имя ошибки указывается компонентом службы процесса BPEL. Обработчик ошибок, использующий имя ошибки и переменную ошибки, перехватывает эту ошибку.

Ошибки во время выполнения

Это выбрасывается системой. Эти ошибки связаны с RunTimeFaultMessage и включены в

http://schemas.oracle.com/bpel/extensionnamespace .

Способы обработки ошибок

В этом разделе мы узнаем о различных способах обработки ошибок.

Бросай активность

Бросок активности явно сбрасывает вину. Блок catch улавливает эту ошибку, и соответствующие действия выполняются таким образом.

  • Используя операцию выброса, вы можете выбросить бизнес-ошибки, а в пределах созданной области вы можете уловить эту ошибку и перенаправить вызывающему (потребителю) действие.

  • Вместо описанного выше подхода вы генерируете ту же ошибку, обнаруженную в действиях catch созданной области видимости. В основной области вы можете поймать эту ошибку с помощью активности catchall.

Используя операцию выброса, вы можете выбросить бизнес-ошибки, а в пределах созданной области вы можете уловить эту ошибку и перенаправить вызывающему (потребителю) действие.

Вместо описанного выше подхода вы генерируете ту же ошибку, обнаруженную в действиях catch созданной области видимости. В основной области вы можете поймать эту ошибку с помощью активности catchall.

Структура обработчика ошибок (EHF)

2 основных файла, используемых в EHF:

  • Fault-Policy.xml
  • Fault-Bindings.xml

Всякий раз, когда процесс BPEL выдает ошибку, EHF проверит, существует ли ошибка в файлах Fault-Bindings.xml. В этом случае будет выполнено действие в файле Fault-Policy.xml. Если действие не найдено, сбой будет сброшен, и он будет обработан в блоке перехвата.

Структура управления ошибками (Fault-Policy.xml и Fault-Bindings.xml) хранится в SOA Composite.

Обработчики сбоев, такие как catch и catchall, находятся внутри BPEL для перехвата всех сбоев, но политики сбоев будут выполняться только при сбое операции вызова.

BPEL — повторная отправка ошибочного процесса

В этой главе мы увидим различные сценарии, связанные с повторной отправкой ошибочного процесса.

Сценарий А

В коде BPEL используется политика ошибок, а ошибка обрабатывается с помощью действия «ora-человек-вмешательство». Ошибка помечается как Восстанавливаемая, и состояние экземпляра устанавливается на «Выполняется».

Сценарий Б

В коде BPEL используется политика ошибок, и ошибка обнаруживается и перебрасывается с помощью действия «ora-rethrow-fault». Ошибка помечается как Восстанавливаемая, а состояние экземпляра устанавливается на «Ошибка»; при условии, что ошибка исправима (например, URL не был доступен).

BPEL — Включение Java & Java EE Code

Существует несколько методов для включения кода Java и Java EE в процессы BPEL. Ниже приведены несколько важных методов —

  • Перенос в качестве службы простого протокола доступа к объектам (SOAP)

  • Встраивать фрагменты кода Java в процесс BPEL с помощью тега bpelx — exec

  • Используйте фасад XML для упрощения манипулирования DOM

  • Используйте bpelx — встроенные методы exec

  • Используйте код Java, завернутый в интерфейс службы

Перенос в качестве службы простого протокола доступа к объектам (SOAP)

Встраивать фрагменты кода Java в процесс BPEL с помощью тега bpelx — exec

Используйте фасад XML для упрощения манипулирования DOM

Используйте bpelx — встроенные методы exec

Используйте код Java, завернутый в интерфейс службы

Деятельность Java Embedding позволяет нам добавлять действия в процесс BPEL. Мы можем написать фрагмент кода Java, используя стандартные библиотеки JDK, API-интерфейсы BPEL, пользовательские и сторонние классы Java, включенные в файлы JAR в развернутых композитах SCA (в каталоге SCA-INF / lib), а также классы и библиотеки Java, доступные в Classpath для SOA Suite Run Time.

Встраивание Java означает функциональность, скрытую внутри, не очень отделенным способом. Java-код сложно поддерживать. Внедряя Java в BPEL (управляемый XML), мы начинаем смешивать технологии, которые требуют различных навыков, а также дорогостоящего преобразования XML в Java Object и демаршаллинга.

Наилучшие варианты использования для Java Embedding, кажется, для расширенной регистрации / трассировки или для специальных проверок / преобразований. Однако не следует заменять встроенные возможности механизма BPEL, а также других компонентов SOA Suite 11g и адаптеров, которые поставляются с ним.

BPEL — Управление данными XML

XPath в основном используется для управления XML в процессе BPEL. Есть несколько ценных функций Xpath, которые можно использовать для манипулирования XML. Давайте посмотрим на функции ниже.

bpel: getVaribleData (varName, partName, xpathStr)

Это можно использовать для извлечения набора элементов из переменной, используя выражение XPath.

<bpel:copy>
   <bpel:from>
   <![CDATA[count(bpel:getVariableData(‘$Variable','$partName')/ns:return)]]>
   </bpel:from>
      <bpel:to variable = "itemNumber">
   </bpel:to>
</bpel:copy>

BPEL: getLinkStatus ()

Это может использоваться для оценки и возврата логического значения, является ли конкретная ссылка активной или неактивной.

: getVariableProperty (строка, строка)

Это полезно при извлечении свойств в переменных.

: DoXSLTTransform ()

Это выполняет преобразования XSLT.

строка ()

Это можно использовать для извлечения текстового содержимого из элементов, а не с помощью / text ().

длины строки ()

Эта функция используется для расчета длины строки. Но оператор! =, Похоже, не работает с выходными данными этой функции. Таким образом, вы можете использовать> или <скорее используя! знак равно

Булевы значения

Вы можете присвоить логические значения с помощью логической функции XPath.

<assign>
   <!-- copy from boolean expression function to the variable -->
   <copy>
      <from expression = "true()"/>
      <to variable = "output" part = "payload" query="/result/approved"/>
   </copy>
</assign>

Назначение даты или времени

Вы можете назначить текущее значение поля даты или времени, используя функции Oracle BPEL XPath getCurrentDate, getCurrentTime или getCurrentDateTime, соответственно.

<!-- execute the XPath extension function getCurrentDate() -->
<assign>
   <copy>
      <from expression = "xpath20:getCurrentDate()"/>
      <to variable = "output" part = "payload"
      query = "/invoice/invoiceDate"/>
   </copy>
</assign>

Конкатенация строк

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

<assign>
   <!-- copy from XPath expression to the variable -->
   <copy>
      <from expression = "concat('Hello ',
      bpws:getVariableData('input', 'payload', '/p:name'))"/>
      <to variable = "output" part = "payload" query = "/p:result/p:message"/>
   </copy>
</assign>

Назначение строковых литералов

Вы можете назначать строковые литералы переменной в BPEL.

<assign>
   <!-- copy from string expression to the variable -->
   <copy>
      <from expression = "'GE'"/>
      <to variable = "output" part = "payload" query = "/p:result/p:symbol"/>
   </copy>
</assign>

Присвоение числовых значений

Вы можете назначать числовые значения в выражениях XPath.

<assign>
   <!-- copy from integer expression to the variable -->
   <copy>
      <from expression = "100"/>
      <to variable = "output" part = "payload" query = "/p:result/p:quantity"/>
   </copy>
</assign>

Примечание . Несколько функций XSLT были использованы для преобразования XML-документа.

Использование наборов корреляции и агрегации сообщений

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

Например, при создании процесса, который проверяет номер счета и проверяет кредитный лимит учетной записи. После проверки процесс вызывает другую систему для проверки запасов и, если товар есть в наличии, генерирует заказ на покупку. Как заказ на покупку узнает, какая учетная запись подлежит списанию? Ответ на этот вопрос — корреляция.

Корреляционные множества

Наборы корреляций используются для уникальной идентификации экземпляров процесса. Каждому набору корреляций присваивается уникальное имя, а затем определяется его одним или несколькими свойствами. Каждое свойство имеет имя и тип (например, строка или целое число).

Псевдоним собственности

Псевдоним свойства для каждого свойства в наборе корреляции должен быть определен. Псевдоним свойства — это сопоставление, которое связывает свойство с входными или выходными значениями.

Важные моменты

Рассмотрим следующие важные моменты, связанные с наборами корреляций и агрегацией сообщений:

  • Процесс, который содержит более одного действия получения или выбора, должен иметь набор корреляции.

  • Наборы корреляций инициализируются значениями из входящих и исходящих сообщений процесса.

  • Если у вас есть группы сообщений, которые связаны вместе с одним конкретным процессом, вы можете настроить один или несколько наборов корреляций для обработки.

Процесс, который содержит более одного действия получения или выбора, должен иметь набор корреляции.

Наборы корреляций инициализируются значениями из входящих и исходящих сообщений процесса.

Если у вас есть группы сообщений, которые связаны вместе с одним конкретным процессом, вы можете настроить один или несколько наборов корреляций для обработки.

Использование событий и таймаутов в процессах BPEL

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

События

BPEL поддерживает два типа событий —

Сообщение События

Эти события инициируются входящими сообщениями посредством вызова операций на типах портов.

Тревожные события

Эти события связаны со временем и инициируются либо по истечении определенного периода времени, либо в определенное время.

  • Однако часто бывает полезнее дождаться более одного сообщения, из которого будет получено только одно.

  • Аварийные события полезны, когда вы хотите, чтобы процесс ожидал обратного вызова в течение определенного периода времени, например 15 минут.

    • Если обратного вызова не получено, поток процесса продолжается, как было запланировано.

    • Полезно в слабосвязанных сервис-ориентированных архитектурах, где нельзя полагаться на постоянную доступность веб-сервисов.

Однако часто бывает полезнее дождаться более одного сообщения, из которого будет получено только одно.

Аварийные события полезны, когда вы хотите, чтобы процесс ожидал обратного вызова в течение определенного периода времени, например 15 минут.

Если обратного вызова не получено, поток процесса продолжается, как было запланировано.

Полезно в слабосвязанных сервис-ориентированных архитектурах, где нельзя полагаться на постоянную доступность веб-сервисов.

Пик Активность

Пик деятельности имеет 2 ветви —

  • onMessage — код в этой ветви равен коду для получения ответа до добавления тайм-аута.

  • onAlarm — это условие имеет код на время ожидания в одну минуту.

onMessage — код в этой ветви равен коду для получения ответа до добавления тайм-аута.

onAlarm — это условие имеет код на время ожидания в одну минуту.

Ожидание активности

Операция ожидания позволяет процессу ожидать в течение заданного периода времени или до тех пор, пока не будет достигнут лимит времени. Точно один из критериев истечения должен быть указан.

BPEL — Использование службы уведомлений

Процесс BPEL можно использовать для службы уведомлений. Процесс может быть разработан, чтобы отправить следующее —

  • Эл. адрес
  • голосовое сообщение
  • обмен мгновенными сообщениями (IM) или
  • служба коротких сообщений (SMS)

Для услуг, упомянутых выше, вы можете настроить канал для входящего и исходящего сообщения.

Использование датчиков Oracle BPEL Process Manager

Составные датчики в приложении SOA предоставляют возможность определять отслеживаемые поля в сообщениях и позволяют находить конкретный составной экземпляр путем поиска поля или полей в сообщении. Например, датчик может быть определен для номера заказа в сообщении, что позволяет нам найти случай, когда найден рассматриваемый номер заказа.

Составные датчики могут быть определены в приложении SOA в нескольких компонентах —

  • Сервисный компонент (предоставляемый сервис)

  • Ссылочный компонент (внешняя ссылка)

  • Посредник или компонент BPEL, подписавшийся на бизнес-событие (публикация события не может иметь датчик)

Сервисный компонент (предоставляемый сервис)

Ссылочный компонент (внешняя ссылка)

Посредник или компонент BPEL, подписавшийся на бизнес-событие (публикация события не может иметь датчик)

Различные способы определения составного датчика

Существуют разные способы определения составного датчика —

  • Указав существующую переменную в качестве датчика.
  • По выражению с помощью построителя выражений.
  • Используя свойства (например, свойства заголовка сообщения).

Датчики в Enterprise Manager

Определение датчика позволяет осуществлять быстрый поиск данных в составном экземпляре консоли EM.

На панели мониторинга консоли EM пользователь может искать экземпляры по имени и значению датчика.

Сенсоры Oracle Process Manager

На вкладке «Экземпляры потока» можно выбрать датчики из раскрывающихся списков и использовать значения, аналогичные групповым символам, для значения датчика.

Вкладка "Экземпляры потока"

Разница между BPEL 1.1 и BPEL 2.0

Новые действия были добавлены в 2.0, которые заменили те, что в 1.1.

<Foreach>

Эта деятельность помогает повторить набор действий. Операция заменяет активность FlowN в версии BPEL 1.1.

<RepeatUntil>

Эта деятельность полезна, если основная часть деятельности должна быть выполнена хотя бы один раз. Условие выражения XPath в действии repeatUntil оценивается после завершения тела действия.

<Если> — <ElseIf> — <еще>

Это действие заменяет переключение в BPEL 2.0. Действие позволяет вам определить условное поведение для конкретных действий, чтобы выбрать между двумя или более ветвями. Только один вид деятельности выбран для выполнения из набора ветвей.

<CompensateScope>

Это действие помогает компенсировать указанную дочернюю область.

<Rethrow>

Это действие было добавлено в обработчики ошибок. Это позволяет вам сбросить ошибку, первоначально зафиксированную непосредственно включенным обработчиком ошибок.