В рамках нового интеграционного подхода - корпоративной сервисной шины (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 можно определить как язык, предназначенный для определения поведения бизнес-процессов с помощью 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 можно отслеживать успех или неудачу каждого отдельного скоординированного действия в бизнес-процессе, задавать гибкую модель транзакций, которая обеспечивает целостность и надежность операций в распределенной среде Web-сервисов и позволяет бизнес-процессам обрабатывать сбои в ходе выполнения.
BPEL можно рассматривать как некий язык программирования, который "находится посередине" между декларативным и процедурным программированием. Как и в любом языке программирования, в BPEL определены зарезервированные слова, которые перечислены ниже:
Поскольку BPEL - это фактически диалект языка XML, скрипт BPEL можно создавать "вручную", либо, что, вероятно, более предпочтительно, воспользоваться одним из существующих программных инструментов для генерации скриптов.
Скрипт BPEL - это документ XML, который соответствует схеме BPEL. Он интерпретируется во время исполнения процессором BPEL, который выявляет ключевые слова и выполняет соответствующую обработку.
Приведенные выше команды BPEL также известны как процессы (activity). Возможны две разновидности описания процессов:
BPEL можно использовать для моделирования и абстрактного, и исполняемого процессов, т.е. либо для описания бизнес-процесса с целью моделирования или представления (абстрактный процесс), либо для создания исполняемого бизнес-процесса.
Наконец, корректная и полная реализация стандарта BPEL должна поддерживать следующий набор стандартов Web-сервисов:
Ряд аналитиков, в том числе и сотрудники исследовательской компании Gartner, полагают, что язык BPEL является явным лидером среди спецификаций в области управления Web-сервисами. Так, другие стандарты - как, например, BPML (Business Process Modeling Language, Язык моделирования бизнес-процессов), WSCI (Web Service Choreography Interface, Интерфейс взаимодействия Web-сервисов), XPDL (XML Process Definition Language, Язык описания процессов) и BTP (Business Transaction Protocol, Протокол бизнес-транзакций) - обладают техническими достоинствами, однако, не поддерживаются большинством поставщиков и не признаны авторитетными органами стандартизации. В связи с этим окончательная редакция спецификации BPEL вероятно станет основным отраслевым стандартом для организации потоков Web-сервисов.