Введение

Компьютерно-исполняемый язык

Язык исполнения бизнес-процессов веб-сервисов (WS-BPEL), обычно называемый BPEL (Business Process Execution Language), — это стандарт OASIS, представляющий собой исполняемый язык для определения действий в бизнес-процессах, использующих веб-сервисы. Процессы в BPEL экспортируют и импортируют информацию исключительно посредством интерфейсов веб-сервисов.

Обзор

Можно описать взаимодействие веб-сервисов двумя способами: как исполняемые бизнес-процессы и как абстрактные бизнес-процессы. Исполняемый бизнес-процесс моделирует реальное поведение участника в бизнес-взаимодействии. Абстрактный бизнес-процесс – это частично специфицированный процесс, не предназначенный для непосредственного выполнения. В отличие от исполняемых процессов, абстрактный процесс может скрывать некоторые необходимые конкретные операционные детали. Абстрактные процессы выполняют описательную функцию, имея более одного возможного варианта использования, включая описание наблюдаемого поведения и/или шаблон процесса. WS-BPEL предназначен для моделирования поведения процессов посредством языка, позволяющего специфицировать как исполняемые, так и абстрактные бизнес-процессы. Таким образом, он расширяет модель взаимодействия веб-сервисов и обеспечивает поддержку бизнес-транзакций. Он также определяет модель интеграции, обеспечивающую взаимодействие, которая должна способствовать расширению автоматизированной интеграции процессов как внутри организаций, так и между ними. Его разработка основывалась на понимании того, что программирование крупных систем и программирование небольших задач требуют различных типов языков. Соответственно, он сериализуется в XML и предназначен для программирования крупных систем.

История

Истоки WS BPEL восходят к Web Services Flow Language (WSFL) и Xlang. В 2001 году IBM и Microsoft разработали собственные, весьма схожие языки для "программирования в масштабе всего приложения": WSFL (Web Services Flow Language) и Xlang соответственно. Microsoft даже создала скриптовый вариант под названием XLANG/s, который впоследствии стал основой для их служб Orchestrations в BizTalk Server. Они специально указали в документации, что этот язык "является проприетарным и не имеет полной документации". С появлением и ростом популярности BPML, а также успехом BPMI.org и движения открытых BPMS, возглавляемого JBoss и Intalio Inc., IBM и Microsoft решили объединить эти языки в новый язык – BPEL4WS. В апреле 2003 года BEA Systems, IBM, Microsoft, SAP и Siebel Systems представили BPEL4WS 1.1 в OASIS для стандартизации через Технический комитет по веб-службам BPEL. Хотя BPEL4WS выпускался в версиях 1.0 и 1.1, технический комитет OASIS WS BPEL 14 сентября 2004 года проголосовал за присвоение их спецификации названия "WS BPEL 2.0". (Это изменение названия привело BPEL в соответствие с другими соглашениями об именовании веб-сервисов, начинающимися с "WS" (как, например, WS Security), и учитывало значительные улучшения, внесенные между BPEL4WS 1.1 и WS BPEL 2.0.) Если речь не идет о конкретной версии, обычно используется обозначение BPEL. В июне 2007 года Active Endpoints, Adobe Systems, BEA, IBM, Oracle и SAP опубликовали спецификации BPEL4People и WS HumanTask, описывающие способы реализации взаимодействия с пользователем в процессах BPEL.

Отношение BPEL к BPMN

Стандартной графической нотации для WS-BPEL не существует, поскольку технический комитет OASIS решил, что это выходит за рамки области применения. Некоторые поставщики разработали собственные нотации. Эти нотации используют тот факт, что большинство конструкций в BPEL имеют блочную структуру (например, sequence, while, pick, scope и т.д.). Эта особенность позволяет напрямую визуализировать описания процессов BPEL в виде структурграмм, в стиле, напоминающем диаграмму Насси–Шнейдермана. Другие предложили использовать существенно отличающийся язык моделирования бизнес-процессов, а именно Business Process Model and Notation (BPMN), в качестве графического интерфейса для представления описаний процессов BPEL. В качестве иллюстрации реализуемости этого подхода спецификация BPMN включает неформальное и частичное соответствие между BPMN и BPEL 1.1. Более детальное соответствие BPMN и BPEL реализовано в ряде инструментов, включая инструмент с открытым исходным кодом BPMN2BPEL. Однако разработка этих инструментов выявила фундаментальные различия между BPMN и BPEL, которые значительно затрудняют, а в некоторых случаях делают невозможным, генерацию читаемого человеком кода BPEL из моделей BPMN. Еще более сложной является задача обратной разработки BPMN в BPEL: генерация кода BPEL из диаграмм BPMN и поддержание синхронизации между исходной моделью BPMN и сгенерированным кодом BPEL, в том смысле, что любое изменение в одном из них должно отражаться в другом.

Добавление поддержки "программирования в малом" к BPEL

Структуры управления BPEL, такие как "if then elseif else" и "while", а также возможности манипулирования переменными, опираются на использование языков "программирования в малом" для реализации логики. Все реализации BPEL должны поддерживать XPath 1.0 в качестве языка по умолчанию. Однако, конструкция BPEL предусматривает расширяемость, позволяющую разработчикам систем использовать и другие языки. BPELJ – это проект, связанный с JSR 207, который может обеспечить возможность использования Java в качестве языка "программирования в малом" внутри BPEL.

BPEL4Люди

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