BPEL (Business Process Execution Language – язык выполнения бизнес-процессов) – это язык сервисов.
Немногие, если таковые вообще удастся найти, бизнес-приложения сегодняшних дней работают в изоляции. С того самого момента, когда коммерческий представитель находит клиента, и до момента, когда будет оплачен счет и выполнен заказ, многочисленные гетерогенные приложения и сервисы, скрытые от посторонних глаз, работают для создания бизнес-процессов. Интегрирование сегодняшних гетерогенных приложений, действий, событий и сервисов в эти сквозные бизнес-процессы является большой проблемой.
Ключом для решения проблемы интеграции является обеспечение общеупотребительного стандарта. Фокусирование такого стандарта на транзакционные бизнес-процессы требует описания, как именно происходят транзакции, и в каком порядке.
Язык выполнения бизнес-процессов (Business Process Execution Language – BPEL) предлагает общеупотребительный язык для бизнес-приложений и сервисов. BPEL является новым стандартом для интеграции гетерогенных приложений и сервисов в транзакционные бизнес-процессы.
"BPEL – это язык потоков технологических процессов и данных (workflow and process flow language). Поэтому если имеется несколько стадий, которые нужно объединить в единое целое для формирования бизнес-процесса, то BPEL – это тот язык, который вы будете использовать для описания, как и в какой последовательности должны происходить события, – объясняет Дейв Шаффер (Dave Shaffer), бизнес-консультант и эксперт по BPEL корпорации Oracle. – Есть одно неправильное представление, которое необходимо рассеять: для того, чтобы BPEL был полезен, вовсе обязательно всюду иметь Web-сервисы. BPEL позволяет связываться со многими различными видами выполняющихся на сервере систем через родные для них (native) протоколы".
До BPEL
"До появления BPEL существовали различные технологии интеграции прикладных систем уровня предприятия (Enterprise Application Integration – EAI) и составляющих чью-то собственность (proprietary -проприетарный) технологий управления бизнес-процессами (Business Process Management – BPM), – объясняет Шаффер. – Люди имели возможность строить связанные приложения, но они были дорогими, сложными и проприетарными".
В декабре 2000 года корпорация Microsoft опубликовала XLANG – язык бизнес-процессов на базе XML, используемый в Microsoft BizTalk Server для управления приложениями и Web-сервисами XML. Три месяца спустя корпорация IBM опубликовала язык потоков данных Web-сервисов (Web Services Flow Language – WSFL), язык XML для описания Web-сервисов как части определения бизнес-процесса. IBM разработала WSFL как часть инфраструктуры технологии Web-сервисов, опираясь на спецификации таких существующих стандартов как SOAP, UDDI, WSDL и XMLP.
В августе 2002 года IBM, Microsoft и BEA выпустили первый общедоступный проект спецификации языка выполнения бизнес-процессов для Web-сервисов (Business Process Execution Language for Web Services -- BPEL4WS), в которой они скомбинировали идеи спецификаций XLANG и WSFL. В апреле 2003 года OASIS (Organization for the Advancement of Structured Information Standards – организация по усовершенствованию стандартов структурированной информации) пригласила всех желающих принять участие в работе технического комитета BPEL. В мае 2003 года о своей поддержке BPEL объявили Sun и Oracle.
Характеристики BPEL
BPEL определяет поведение бизнес-процессов, базирующихся на Web-сервисах. BPEL реализует функциональность экспорта и импорта, используя исключительно интерфейсы Web-сервисов. BPEL вписывается в архитектуру основных Web-сервисов, построенную поверх UDDI, WSDL, XML и XML Schema.
"BPEL – это упрощенный стандартный язык, который облегчает гармоническое сочетание различных Web-сервисов, – говорит Шаффер. – Он образует слой поверх Web-сервисов и XML, а также стандартных блоков различных компонентов. Большинство людей уже работает в среде SOAP, WSDL, XML и XML Schema, и большинство компаний уже двигается в направлении интеграции на основе XML. Так что BPEL – это правильный путь для разработчиков".
Три ключа к BPEL
Основу BPEL составляют три ключевые свойства: асинхронность, координация потоков и управление исключительными ситуациями. Все они связаны с проблемами, с которыми сталкиваются разработчики, занимающиеся управлением интеграцией.
Asynchrony (Асинхронность) Асинхронность имеет дело с асинхронными взаимодействиями, корреляцией сообщений и надежностью. Поддержка асинхронности необходима для разрешения Web-сервисов в сценариях интеграции и является обязательной для оптимального использования рабочего времени (для лучшего распределения обработки она позволяет пользователям вмешиваться в течение бизнес-потока или задержанной пакетной обработки). За счет разделения запросов на обслуживание и соответствующих им откликов асинхронность повышает масштабируемость и помогает избежать узких мест при выполнении приложения. Кроме того, она допускает непрерываемое выполнение, когда сервисы временно недоступны и когда клиенты работают в автономном режиме или отключены.
Flow coordination. (Координация потоков) Координация потоков включает параллельный поток выполнения, образцы соединений и динамические потоки. В реальных приложениях бизнес-потоки могли бы включать образцы сложных взаимодействий, и с синхронными, и с асинхронными сервисами. Координация потока включает интерфейс с WSDL, действия потока, переменные XML и отвечает за компенсацию. BPEL использует WSDL для обращения к обмениваемым сообщениям, вызванным операциям и типам портов. Действия с потоком используют общие переменные XML, так что компенсационные обработчики (compensation handlers) должны сохранять снимки данных, которые могут быть использованы обработчиком. Компенсационные обработчики могут отменить шаги, которые были уже завершены.
BPEL includes basic and structured activities. (В BPEL включены основные и структурированные действия). Основные действия состоят из индивидуальных шагов для взаимодействия с сервисом, манипулирования обмениваемыми данными или обработки исключительных состояний, с которыми сталкиваются в течение выполнения. Структурированные действия определяют последовательность выполнения и описывают создание процесса, транслируя выполняемые ими действия в структуры; в состав этих структур включены поток данных, шаблоны управления, обработка внешних событий, обработка ошибок и координация сообщений.
Exception management. (Управление исключительными ситуациями). Управление исключительными ситуациями имеет дело с синхронными ошибками, асинхронным управлением исключительными ситуациями и компенсацией бизнес-транзакций. Для того чтобы автоматизировать бизнес-процессы, большие усилия сосредоточены на управлении исключительными ситуациями, и BPEL упрощает управление исключительными ситуациями для Web-сервисов. При возникновении исключительных ситуаций вызываются локальные обработчики ошибки, связанные с Web-сервисами, и асинхронные сервисы уведомляются об этих исключительных ситуациях.
От сервисов к процессам
BPEL определяет конструкции, необходимые для составления набора сервисов для бизнес-процессов, связанных с совместной деятельностью и сделками. "BPEL определяет, как посылать XML-сообщения отдаленным сервисам, как управлять структурами данных XML и асинхронно получать XML-сообщения от отдаленных сервисов, – замечает Шаффер. – Он также позволяет вам управлять событиями и исключительными ситуациями, определять параллельные последовательности выполнения, и отменять части процессов, когда происходят исключительные ситуации".
С помощью BPEL типичные бизнес-процессы могут быть описаны как выполнимые бизнес-процессы, моделирующие фактическое поведение участника бизнес-взаимодействия, и как бизнес-протоколы, использующие описания процесса, которые определяют обоюдно видимое поведение обмена сообщениями каждой из сторон, участвующих в протоколе, не раскрывая их внутреннего поведения. Описания бизнес-протоколов называются абстрактными процессами. BPEL моделирует поведение как исполняемых, так и абстрактных процессов.
После BPEL
Есть некоторые вещи, которые BPEL разрешить не может, в том числе, сложные преобразования, конвертирование данных, соглашения с торговыми партнерами, ручные (выполняемые человеком) процессы и привязка к определенным выполняющимся на сервере системам, объясняет Шаффер и добавляет, что BPEL и не пытается “дать всем сестрам по серьгам”.
"BPEL не включает в себя сложные преобразования, но поддерживающие BPEL продукты поддерживают и некоторые XQueries, так что вы можете связать все вместе, как сервис, – объясняет Шаффер. – В BPEL имеются некоторые простые преобразования, но без помощи XQuery или XSLT для сложных преобразований вы должны были бы выполнить их отдельно, а затем интегрировать их".
Шаффер добавляет, что в BPEL отсутствует концепция ручного процесса, но он имеет ключевую поддержку асинхронных сервисов и ручных задач; а ручные задачи легко поддерживаются как сервисы.
Поддержка обслуживания BPEL
Технический комитет OASIS по проблеме языка Web Services Business Process Execution Language (WSBPEL), работает над развитием BPEL. В него входят фирмы BEA Systems, Commerce One, EDS, IBM, Microsoft, NEC, Novell, Oracle, SAP, Siebel Systems, Sybase, Tibco и Vignette.
Текущая спецификация BPEL, рассмотрением которой в настоящее время занимается OASIS, имеет номер версии 1.1. Планируется, что ее рассмотрение будет завершено к концу 2004 года. Тем временем, продукты BPEL для серверов типа Oracle BPEL Process Manager поставляются уже сегодня.
Oracle BPEL Process Manager
Oracle BPEL Process Manager является масштабируемым сервером оркестровки на основе BPEL с поддержкой моделирования, объединения, развертывания и управления процессами BPEL; он предлагается и как автономный продукт, и как опция сервера приложений Oracle 10g Enterprise Edition. Помимо BPEL сервер приложений Oracle 10g поддерживает SOAP, WSDL, WS-Coordination, WS-Transaction и XML, каждый из которых позволяет приложениям гибко находить друг друга и прозрачно взаимодействовать в рамках независимой от платформы модели.
"Основная бизнес-проблема с BPEL – это интеграция, – объясняет Роб Ченг, директор, управляющий выпуском продукта Сервер Приложений Oracle 10g. – Цель BPEL состоит в том, чтобы найти более простые, более гибкие и более легкие способы разрешения проблем интеграции – не только для подключения унаследованных приложений, но также и для того, чтобы в будущем строить приложения с более высоким уровнем модульности".
"BPEL определяет совместную оркестровку и хореографию (orchestrated and choreographed) сервисов и способен компоновать сущности воедино в потоки процессов и потоки приложений в рамках гетерогенной архитектуры – независимо от используемого оборудования, языка программирования или операционной системы – то есть, именно там, где сервер BPEL от Oracle превосходит другие системы, – говорит Ченг. – У нас есть единственный промышленный механизм BPEL, который обрабатывает BPEL естественным образом, так что он богаче, быстрее, работе с ним проще научиться и он более расширяем, чем проприетарные альтернативы".