Oracle bpel что это
Are you aware how much time I've spent learning for details of Java? Thread management, dynamics, CORBA.
воскресенье, 21 июня 2009 г.
Введение в SOA и BPEL
Уже более полугода я занимаюсь разработкой описаний бизнес-процессов на языке BPEL. За это время удалось кое в чем разобраться, кое что структурировать и осознать. Результатом стала данная статья, впервые опубликованная на HabraHabr. Теперь же я решил привести текст статьи в своем блоге с необходимыми изменениями.
В то же время понятно, что пользователи (сотрудники предприятия) всегда должны иметь возможность получать любую необходимую им информацию, независимо от того, в какой системе она хранится и/или обрабатывается.
Для этого необходимо интегрировать все приложения, предоставляющие и обрабатывающие информацию в единую информационную систему. Одной из концептуальных возможностей решения такой задачи является использование SOA.
Сага о SOA
Решение данной задачи напрямую зависит от того, как мы соединим сервисы. Мы можем соединить сервисы друг с другом напрямую. Тогда мы получим огромное количество связей, в которых со временем будет трудно разобраться. Плюс к этому нам необходимо будет писать конвертеры данных из формата одного сервиса в форматы каждого сервиса с которым он взаимодействует.
В мире Java (а именно про этот мир я и буду писать) существуют такие реализации ESB, как:
Сага о BPM
Примеры бизнес-процессов: обработка входящего письма, подготовка исходящего документа, составление инструкции, создание шестеренки, расчет заработной платы для сотрудника, оформление отпуска, оформление командировки и т.д.
Теперь посмотрим, что же предлагают нам вендоры для работы с BPM:
Сага о BPEL
Обычно работа с BPEL-описаниями процессов состоит из двух этапов: создание и выполнение. Создается процесс с помощью специализированных графических редакторов, которые позволяет этот процесс нарисовать. Примерами таких редакторов являются:
После того как процесс сохранен как .bpel-файл, его необходимо развернуть на сервере выполнения бизнес-процессов. Например, в ActiveBPEL Engine такой процедурой является создание bpr-архива: архива, включающего в себя bpel-описание процесса, метаинформацию, набор WSDL-файлов, описывающих вызываемые веб-сервисы и сам бизнес-процесс, как веб-сервис.
На этом введение можно считать законченным. Не думал, что статья получится такой длинной. Впрочем, в ней удалось описать суть основных технологий и понятий, которые постепенно становятся мэйнстримом при разработке КИС. Буду рад вашим комментариям.
Рич Шверин (Rich Schwerin), старший редактор издательства Oracle Publishing.
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 составляют три ключевые свойства: асинхронность, координация потоков и управление исключительными ситуациями. Все они связаны с проблемами, с которыми сталкиваются разработчики, занимающиеся управлением интеграцией.
Exception management. (Управление исключительными ситуациями). Управление исключительными ситуациями имеет дело с синхронными ошибками, асинхронным управлением исключительными ситуациями и компенсацией бизнес-транзакций. Для того чтобы автоматизировать бизнес-процессы, большие усилия сосредоточены на управлении исключительными ситуациями, и BPEL упрощает управление исключительными ситуациями для Web-сервисов. При возникновении исключительных ситуаций вызываются локальные обработчики ошибки, связанные с Web-сервисами, и асинхронные сервисы уведомляются об этих исключительных ситуациях.
От сервисов к процессам
После 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 естественным образом, так что он богаче, быстрее, работе с ним проще научиться и он более расширяем, чем проприетарные альтернативы".
Качественно новым элементом идеи сервисно-ориентированной архитектуры (SOA) стала ориентация на применение технологий, позволяющих создавать распределенные системы на базе Web-сервисов. В чем заключается новизна Web Services и что это такое?
Андрей Колесов
Одно из главных направлений развития современных информационных систем масштаба предприятия связано с концепцией сервис-ориентированной архитектуры (services-oriented architecture, SOA). Отметим, что сама по себе идея компонентного построения распределенных компьютерных систем, в которых можно было бы использовать те или иные вычислительные и информационные ресурсы по мере их реальной необходимости, совсем не нова. По большому счету, таков изначально был один из основополагающих принципов применения ИТ с момента создания первых ЭВМ, еще 50 лет назад.
Если вспомнить о диалектическом развитии истории по спирали, то качественно новым элементом идеи SOA стала ориентация на применение появившихся относительно недавно технологий, позволяющих создавать распределенные системы на базе Web-сервисов. В несколько упрощенном виде новизна Web Services заключается в использовании Интернет-технологий на базе открытых отраслевых стандартов, что, в свою очередь, позволяет создавать гетерогенные (платформно независимые), масштабируемые (от локальных до глобальных) решения.
Набор технологий Web Services
В результате к сегодняшнему моменту сложилась целая система WS-стандартов (один из вариантов ее структуры представлен на рис. 1). Анализ этих стандартов, которых уже сейчас насчитывается несколько десятков, не входит в задачу настоящей статьи*. Отметим только, что подавляющее большинство этих стандартов существуют лишь на бумаге и пока не поддерживаются в программных продуктах. Более того, здесь наблюдается неприятная тенденция - создание конкурирующих между собой спецификаций, подготовкой которых занимаются две группировки ИТ-компаний: одна во главе с IBM и Microsoft и другая, возглавляемая Sun Microsystems и Oracle.
Рис. 1. Структура стандартов и спецификаций Web Services.
Для решения задач «оркестровки» и «хореографии» также разработан целый набор стандартов. На лидирующие позиции в этой сфере сейчас претендует в первую очередь Business Process Execution Language for Web Services (язык исполнения бизнес-процессов для Web-сервисов), обозначаемый как BPEL4WS, или просто BPEL. Разработкой этого стандарта занимались специалисты группы ИТ-компаний, ведущую роль в которой играли IBM и Microsoft. Более того, BPEL фактически стал прямым наследником ранее созданных спецификаций IBM WSFL и Microsoft XLANG. В нем используются сразу несколько XML-спецификаций - WSDL 1.1, XML Schema 1.0, XPath 1.0.
Первый вариант BPEL был представлен два года назад и в марте 2003 г. был утвержден OASIS (Organization for the Advancement of Structured Information Standards, организация по продвижению стандартов в области структурированной информации). Весной 2004 г. появилась версия BPEL 1.1. Эта спецификация была впервые реализована в продуктах IBM WebSphere Business Integration Server Foundation 5.1 и Microsoft BizTalk Server 2004. Кроме того, поддержка BPEL обеспечивается в ряде ведущих платформ исполнения приложений и сервисов (например, SAP NetWeaver и BEA WebLogic).
Говоря о BPEL, нужно упомянуть и о еще двух стандартах, также разработанных совместными усилиями IBM и Microsoft, - WS-Coordination и WS-Transaction. Данные спецификации дополняют возможности BPEL при автоматизации сложных и длительных по времени бизнес-транзакций.
Для многих разработчиков стандарт BPEL - это пока «темная комната», в которой скрываются загадочные возможности создания и использования каких-то качественно новых приложений. Хотя из самого названия понятно, что BPEL позволяет делать нечто для автоматизации бизнеса на базе Web-сервисов, до сих пор среди программистов бытует мнение, что данная технология доступна только профессионалам-гуру.
На самом же деле BPEL - это достаточно простой в изучении, но вполне мощный язык, реализованный на базе XML, позволяющий определить последовательность выполнения функционала Web-сервисов в ходе различных потоков операций (транзакций). И здесь наиболее важен тот факт, что BPEL поддерживают ведущие поставщики ПО, предлагающие BPEL-совместимые продукты. И пусть число пользователей этих продуктов пока не слишком велико, но можно ожидать, что оно будет очень быстро расти.
В то же время нужно подчеркнуть, что, решая задачи интеграции разнородных приложений в общей цепочке выполнения бизнес-процессов, BPEL совершенно не учитывает, как Web-сервисы выполняют порученные им функции, занимаясь исключительно координацией их работы («оркестровкой» или даже «хореографией» отдельных исполнителей) в ходе делового потока.
Примеры применения BPEL
Для иллюстрации возможностей BPEL рассмотрим пару простых примеров.
Рис. 2. Простой пример процесса показывает возможности внутреннего и внешнего использования Web-сервисов.
Каждая операция (invoke), представленная на диаграмме прямоугольным блоком, описывается простой BPEL-структурой, которая включает элементы, соответствующие таким действиям, как отправка запроса, ожидание, получение ответа и т. д. Например, операция запроса о кредитоспособности (которая может выполняться в синхронном или асинхронном режимах - переход к последующим действиям с ожиданием или без ожидания ответа) может описываться примерно следующим образом:
<!-пример генерации кода BPEL-->
Как видно, этот код реализован на базе синтаксиса XML. Более того, BPEL может работать с различными другими XML-средствами, такими, как XSLT, XQuery and XPath. Полный вариант BPEL-файла для процесса определения цены должен, конечно, содержать также соответствующие блоки взаимодействия с Web-сервисами торговых партнеров и код логики выполнения переходов и простейших вычислительных операций (например, выбора наименьшей цены). Дополненный WSDL-файлами (для описания внешних Web-сервисов), он будет представлять собой законченную программу «оркестровки» Web-сервисами.
Рассмотрим еще один пример использования BPEL при решении довольно обычной задачи: транспортное агентство получает от клиента запрос на приобретение билетов по некоторому маршруту, заказывает билеты в авиакомпании и получает их от нее (для упрощения примера мы не рассматриваем последующие действия - оплату билетов, доставку их клиенту и т. д.). Потоковая диаграмма действий такого бизнес-процесса представлена на рис. 3, а в листинге содержится соответствующий программный код, демонстрирующий основные элементы BPEL.
Рис. 3. Бизнес-процесс заказа авиабилетов.
Программа начинается с описания бизнес-процесса, названного ticketOrder (тег). Далее идет блок описания партнеров, участвующих в этом процессе (ограниченный тегом). В данном случае их два - клиент (customer) и авиакомпания (airline). Для подключения партнеров к процессу служит двусторонний указатель, называемый service link type и содержащий две коллекции Web-сервисов, ссылки на которые выполняются с помощью ролей. В частности, указатель buyerLink включает две роли, в каждой из которых имеется описание соответствующего порта:
Соответственно партнер airline, который использует описание buyerLink, указывает две роли: для владельца процесса (myRole) и внешнего партнера (partnerRole).
Эта информация будет использоваться в последующем коде.
Логика самого бизнес-процесса, который состоит из операций, называемых действиями (activity), заключена внутри тегов
В начале этого блока находятся конструкции, называемые links, которые указывают направления связей при выполнении последующих операций.
Далее приведен код самих операций, которых в данном случае три. В этом примере мы используем две наиболее часто встречающихся операции activity -
<receive> и <invoke>.
Часто при разработке приложений возникает необходимость во взаимодействии различных сервисов, баз-данных и других протоколов.Для этого существует язык BPEL.
В этой статье я хочу рассказать о установке расширений для работы с BPEL и о компонентах BPEL в JDeveloper.
Примечание: Работать с BPEL\BPM процессами можно только в версиях Oracle JDeveloper 11g Release 1 (11.1.1.x).
Начнем.
1. Установите и запустите JDeveloper версии 11.1.1.x
2. Подключите расширения SOA как указано на рисунках ниже :
В графическом режиме файл composite.xml разделяется на три секции:
- Exposed services (в этой секции отображаются сервисы и JCA адаптеры, которые обеспечивают точку входа для будущего композитного SOA приложения .)
- Components (в этой секции отображаются добавленные нами компоненты(в нашем случае нам нужен только Bpel Process)
- External References (в этой секции отображаются добавленные нами внешние сервисы и JCA адаптеры( к БД, FTP, BAM и др.)).
-<Название процесса>.bpel
В графическом режиме файл <Название процесса>.bpel разделяется на 2 секции:
Читайте также: