Предлагаемый вниманию читателя материал завершает рассмотрение вопросов, поднятых в статьях "Корпоративная сервисная шина - "бюджетные" подход к решению задач интеграции" и "Сервис-ориентированная архитектура". Напомним, речь шла о новом интеграционном подходе - корпоративной сервисной шине (ESB) - реализация которого неразрывно связана с концепцией сервис-ориентированной архитектуры (SOA). ESB - это слой промежуточного программного обеспечения, предназначенного для передачи данных между приложениями и системами через шинную архитектуру. Для описания систем и приложений на уровне бизнес-процессов разработано несколько спецификаций, особое место среди которых занимает язык BPEL4WS. Именно об этом языке и рассказывается в данной статье.
Немного истории
В августе 2002 года, осознав сложность обращения к Web-сервисам в синхронной и асинхронной средах, корпорации BEA, IBM, Microsoft, SAP и Siebel в результате совместных усилий разработали язык реализации бизнес-процессов для Web-сервисов (Business Process Execution Language for Web Services, сокр. BPEL4WS или просто BPEL). В апреле 2003 на рассмотрение международной организации OASIS была передана спецификация следующей версии этого языка - BPEL4WS 1.1. В настоящий момент спецификация BPEL опубликована на сайте IBM и OASIS. Стоит отметить, что различия между редакциями 1.0 и 1.1 не носят принципиального характера.
Введение
Как известно, Web-сервисы - это автономные, модульные приложения, предназначенные для реализации бизнес-процессов. Web-сервисы опираются на ряд отраслевых стандартов: WSDL (для описания), UDDI (для информирования и публикации) и SOAP (для обмена сообщениями). Эти спецификации не зависят от платформы и языка, благодаря чему пользователи могут связывать различные компоненты из разных организационных структур. Тем не менее, ни один из этих стандартов не предусматривает определения бизнес-семантики Web-сервисов. Таким образом, Web-сервисы оказываются изолированными. Для решения этой проблемы необходимо соединить Web-сервисы и указать, как их совместно использовать для реализации более сложной функциональности - как правило, для реализации бизнес-процессов.
Язык BPEL позволяет задавать бизнес-процессы и то, как они связаны с Web-сервисами, а также, как бизнес-процессы используют Web-сервисы для достижения поставленных задач и какие Web-сервисы предоставляются бизнес-процессом.
Язык BPEL: основные понятия
В самом общем виде BPEL можно определить как язык, предназначенный для определения поведения бизнес-процессов с помощью Web-сервисов.
Действительно, с помощью языка WSDL можно осуществлять интеграцию в рамках лишь двух моделей - синхронного взаимодействия без сохранения состояния обмена и асинхронных взаимодействий с обменом некоррелированными сообщениями. Язык BPEL позволяет использовать Web-сервисы при последовательном одноранговом (peer-to-peer) обмене сообщениями - как синхронных, так и асинхронных, причем с сохранением состояния процесса, который может иметь большую продолжительность по времени и затрагивать более двух участников. В результате, эта спецификация значительно расширяет возможности использования Web-сервисов для интеграции систем, приложений, систем B2B.
Язык BPEL объединяет возможности языка WSFL (Web services flow language, Язык организации потоков Web-сервисов), разработанного компанией IBM, и языка XLANG, используемого в Microsoft BizTalk Server 2002. BPEL включает WSFL для поддержки графоориентированных процессов, а XLANG - для поддержки структурных конструкций для процессов. Таким образом, BPEL предназначен для поддержки реализации бизнес-процессов любой сложности, а также для описания интерфейсов бизнес-процессов. Надо отметить, что язык BPEL "неразрывно связан" со спецификациями WS-Coordination ("Координация Web-сервисов") и WS-Transaction ("Транзакции Web-сервисов"), которые были определены для совместного использования с BPEL и разработаны для координации транзакций и процессов. Так, в спецификации WS-Coordination описываются стандартные механизмы создания и регистрации протоколов транзакций, которые координируют выполнение распределенных операций в среде Web-сервисов. С помощью спецификации WS-Transaction можно отслеживать успех или неудачу каждого отдельного скоординированного действия в бизнес-процессе, задавать гибкую модель транзакций, которая обеспечивает целостность и надежность опера
BPEL можно рассматривать как некий язык программирования, который "находится посередине" между декларативным и процедурным программированием. Как и в любом языке программирования, в BPEL определены зарезервированные слова, которые перечислены ниже:
Вызов операции с помощью Web-сервиса (<invoke>).
Ожидание внешнего сообщения (<receive>).
Генерация ответа для входных/выходных данных (<reply>).
Ожидание в течение некоторого времени (<wait>).
Копирование данных между позициями (<assign>).
Индикация ошибки или сбойной ситуации (<throw>).
Остановка реализации всего сервиса (<terminate>).
Отсутствие действий (<empty>).
Определение последовательности выполнения действий (<sequence>).
Ветвление с помощью оператора выбора (<switch>).
Определение цикла (<while>).
Выполнение одного из нескольких альтернативных маршрутов (<pick>).
Индикация того, что шаг должен быть выполнен параллельно (<flow>).
Индикация обработки ошибочной логики с помощью <throw> и <catch>.
Поскольку BPEL - это фактически диалект языка XML, скрипт BPEL можно создавать "вручную", либо, что, вероятно, более предпочтительно, воспользоваться одним из существующих программных инструментов для генерации скриптов.
Скрипт BPEL - это документ XML, который соответствует схеме BPEL. Он интерпретируется во время исполнения процессором BPEL, который выявляет ключевые слова и выполняет соответствующую обработку.
Приведенные выше команды BPEL также известны как процессы (activity). Возможны две разновидности описания процессов:
Исполняемые бизнес-процессы - процессы, которые моделируют фактическое поведение участника бизнес-взаимодействия.
Бизнес-протоколы, которые, наоборот, используют описания процесса для указания поведения каждой стороны, задействованной в протоколе при обмене сообщениями, без раскрытия внутреннего поведения. Описания процесса для бизнес-протокола называются абстрактными процессами.
BPEL можно использовать для моделирования и абстрактного, и исполняемого процессов, т.е. либо для описания бизнес-процесса с целью моделирования или представления (абстрактный процесс), либо для создания исполняемого бизнес-процесса.
Наконец, корректная и полная реализация стандарта BPEL должна поддерживать следующий набор стандартов Web-сервисов:
WSDL 1.1
XML Schema 1.0
XPath 1.0
WS-Addressing
UDDI v2.0
WS-Security - необязательно, но весьма желательно.
Заключение
Ряд аналитиков, в том числе и сотрудники исследовательской компании Gartner, полагают, что язык BPEL является явным лидером среди спецификаций в области управления Web-сервисами. Так, другие стандарты - как, например, BPML (Business Process Modeling Language, Язык моделирования бизнес-процессов), WSCI (Web Service Choreography Interface, Интерфейс взаимодействия Web-сервисов), XPDL (XML Process Definition Language, Язык описания процессов) и BTP (Business Transaction Protocol, Протокол бизнес-транзакций) - обладают техническими достоинствами, однако, не поддерживаются большинством поставщиков и не признаны авторитетными органами стандартизации. В связи с этим в Gartner считают, что в 2005 году окончательная редакция спецификации BPEL станет основным отраслевым стандартом для организации потоков Web-сервисов (с вероятностью 0.7).
Список литературы
Клив Финкельштейн (Clive Finkelstein) "Корпорация: языки управления бизнес-процессами, часть1 - BPEL" (The Enterprise: Business Process Management Languages, Part 1: BPEL).
Фрэнк Лейманн (Frank Leymann), Дитер Роллер (Dieter Roller) "Беглый обзор языка BPEL4WS" (A quick overview of BPEL4WS)
Фрэнк Лейманн (Frank Leymann), Дитер Роллер (Dieter Roller) "Цели спецификации языка BPEL4WS" ("Goals of the BPEL4WS Specification.").
Материалы, опубликованные на сайте Консорциума по интеграции (Integration Consortium).
Спецификация "Язык реализации бизнес-процессов для Web-сервисов, версия 1.1" (Business Process Execution Language for Web Services, Version 1.1).