2005 г.
Бизнес-процессы и XML
Подготовлено: по материалам зарубежных сайтов
Перевод: Intersoft Lab
Предлагаемый вниманию читателя материал завершает рассмотрение вопросов, поднятых в статьях "Корпоративная сервисная шина - "бюджетные" подход к решению задач интеграции" и "Сервис-ориентированная архитектура". Напомним, речь шла о новом интеграционном подходе - корпоративной сервисной шине (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 можно отслеживать успех или неудачу каждого отдельного скоординированного действия в бизнес-процессе, задавать гибкую модель транзакций, которая обеспечивает целостность и надежность операций в распределенной среде Web-сервисов и позволяет бизнес-процессам обрабатывать сбои в ходе выполнения.
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).