Создание бизнес-процесса в BPEL

Цель работы

Лабораторная работа дает практические навыки реализации прототипа распределенного бизнес-процесса для выбранной предметной области на основе технологии BPEL и веб-сервисов.

Задачи

  1. Выбрать предметную область и продумать содержание бизнес-процесса и веб-сервиса, который будет участвовать в процессе.
  2. Нарисовать диаграмму бизнес-процесса.
  3. Создать WSDL-описание бизнес-процесса и веб-сервиса, который им используется.
  4. Реализовать BPEL-процесс и промоделировать его работу в среде ActiveBPEL Designer.

Предварительные требования

Для выполнения работы на компьютере должно быть установлено следующее ПО:

·         JDK версии 1.5 или выше.

·         Eclipse IDE версии 3.2.1 или выше с установленными расширениями J2EE Standard Tools 1.5.2 или выше и Web Standard Tools 1.5.2 или выше.

·         ActiveBPEL Designer версии 2.0.

Для поиска публичного веб-сервиса потребуется доступ в Интернет.

При реализации бизнес-процесса потребуются знания технологии веб-сервисов и в частности WSDL.

Ход работы

Выбор предметной области

Выберите предметную область и постройте на черновике диаграмму бизнес-процесса в свободной форме. Определите на диаграмме входные и выходные данные процесса и отдельных блоков и условия перехода.

К бизнес-процессу предъявляются следующие требования:

·         Наличие в процессе одного блока, вызывающего веб-сервис, который затем будет реализован самостоятельно, и блока вызывающего сторонний веб-сервис;

·         Наличие хотя бы одного ветвления или цикла.

Примеры предметных областей:

·         Бизнес-процесс выдачи кредита включает вызов сервиса оценки риска (Assessor) в случае крупной суммы кредита и вызов сервиса, подтверждающего выдачу кредита (Approver). Этот пример включен в комплект поставки ActiveBPEL Designer.

·         Бизнес-процесс заказа туристической путевки может включать вызов сервиса, показывающего текущую погоду на выбранном курорте, и вызов сервиса бронирования комнаты в отеле.

·         Бизнес-процесс покупки товара в Интернет-магазине может включать проверку платежеспособности кредитной карты, указанной покупателем, и проверку наличия товара на складе.

Исходя из требования использовать в бизнес-процессе сторонний веб-сервис, полезно сначала найти подходящий веб-сервис, а уже затем выбирать предметную область под него.

Поиск стороннего веб-сервиса

Рекомендуется с целью облегчения отладки бизнес-процесса в среде ActiveBPEL Designer использовать только веб-сервисы в стиле RPC/Encoded. Далее будет рассматриваться работа только с такими сервисами.

Искать веб-сервисы можно в поисковых системах Интернета. Существуют также специальные сайты, на которых есть списки публичных веб-сервисов, например, http://xmethods.net/. При выборе веб-сервиса, обращайте внимание на стиль (RPC/Encoded) и на условия использования веб-сервиса, т.к. там могут быть ограничения на количество вызовов в сутки. Для проверки работоспособности веб-сервиса удобно использовать Web Services Explorer, встроенный в среду Eclipse. Для этого:

  1. Выберите пункт меню Run → Launch the Web Services Explorer.
  2. Нажмите кнопку WSDL Page.
  3. В области Navigator нажмите на WSDL Main.
  4. Введите в поле WSDL URL ссылку на WSDL-описание сервиса и появится возможность вызвать любую операцию веб-сервиса с заданными параметрами. В некоторых WSDL-описаниях встречается встроенная документация для каждой операции.

Рисунок 1 – Интерфейс Web Services Explorer, встроенного в среду Eclipse

Создание WSDL-описания

Взяв за основу результаты выполнения предудыщих пунктов, создайте два отдельных WSDL-описания: для вашего веб-сервиса и для BPEL-процесса. Если вы хорошо знаете WSDL, то сделать это можно в любом текстовом редакторе. Однако более удобным представляется использование средств предоставляемых средой Eclipse.

  1. Запустите среду Eclipse.
  2. Создайте новый проект (File → New → Project) типа Dynamic Web Project. Укажите имя проекта, соответствующее выбранной предметной области. Остальные настройки можно оставить по-умолчанию.
  3. Создайте новое WSDL-описание (FileNewOtherWeb ServicesWSDL). Задайте имя WSDL-файла, URI целевого пространства имен XML (Target Namespace), префикс пространства имен. Выберите в пункте SOAP Binding Options пункт rpc encoded. Появится предупреждение о том, что rpc encoded не поддерживается спецификациями WS-I, которое можно проигнорировать. В результате будет сгенерирован шаблон WSDL-описания.
  4. Поправьте сгенерированный средой шаблон WSDL-описания в графическом режиме или в текстовом. При этом адрес привязки для сервиса BPEL-процесса должен быть вида http://localhost:8080/active-bpel/services/<имя-BPEL-сервиса>, а для вашего сервиса вида http://localhost:8080/<имя-проекта>/services/<имя-порта-сервиса>. Также надо изменить набор аргументов операции, их типы и имена в соответствии с предметной областью. Проследите, чтобы в WSDL-описании не было сущностей с одинаковыми именами, т.к. это может в последствии затруднить реализацию веб-сервиса.

Рисунок 2 – Графическое представление получившегося WSDL-описания

Реализация BPEL-процесса

  1. Запустите среду ActiveBPEL Designer.
  2. Создайте новый проект (File → New → Project) типа Simple Project. Задайте имя проекта, соответствующее выбранной предметной области.
  3. Сохраните в папку проекта WSDL-описание стороннего веб-сервиса для ускорения работы с ним.
  4. Добавьте WSDL-описание бизнес-процесса и всех используемых в нем веб-сервисов в среду. Для этого перейдите на вкладку Web References, нажмите на кнопку Add a Web Reference, укажите местонахождение WSDL-файла и все описания из него будут доступны для работы. Проделайте это действие для всех трех WSDL-описаний, используемых в работе.
  5. Добавьте отладочные значения для переменных, которые будут использоваться в BPEL-процессе. Это понадобится в дальнейшем для моделирования работы процесса. Для этого на вкладке Web References выберите в меню пункт View Messages. В контекстном меню переменной выберите пункт Add Sample и укажите значение.
  6. Создайте новый BPEL-процесс (FileNew BPEL Process). Задайте имя процесса, соответствующее выбранной предметной области.
  7. Поместите в BPEL-процесс блоки Receive и Reply. Для этого перейдите на вкладку Web References и выберите в меню View WSDL. Найдите порт и операцию, соответствующую BPEL-процессу и перетащите ее в поле редактирования процесса. Появится мастер, предлагающий создать новый Partner Link Type, задайте имя для него и Role. Далее выберите Add To WSDL File и укажите WSDL-файл BPEL-процесса. В окне Activity Type выберите Receive-Reply. Будет создано два блока, соответствующих входу и выходу бизнес-процесса.
  8. Аналогично перетащите операции двух оставшихся веб-сервисов в поле редактирования бизнес-процесса, но теперь выберите в окне Activity Type тип Invoke.
  9. Используя вкладку Properties, задайте имена для всех созданных блоков, изменив содержимое свойства Activity Name.
  10. Соедините блоки линиями перехода. Для этого выделите два блока и в контекстном меню выберите пункт Link Activities.
  11. Задайте условия для некоторых переходов. Для этого выделите переход и выберите пункт контекстного меню Edit Transition. Появится окно, в котором можно выбрать переменную из имеющихся и условие перехода.
  12. Так как переменные различных блоков не согласованы между собой, необходимо добавить несколько блоков типа Assign для того чтобы приравнять значение выходной переменной одного блока входной переменной другого. Для этого перейдите на вкладку Process Variables, найдите там нужную переменную и выберите в контекстном меню Open. В открывшемся поле найдите часть, которую нужно скопировать и выберите пункт контекстного меню CopyFrom или CopyTo и в появившемся окне выберите другую часть операции присваивания. В поле редактирования бизнес-процесса появится новый блок, который надо вставить в нужное место процесса и связать линиями перехода.
  13. Выберите блок Receive и в его свойствах установите значение Create Instance равное Yes.
  14. Сохраните проект. Если процесс построен правильно, то на вкладке Problems не должно быть никаких сообщений.

Рисунок 3 – Диаграмма BPEL-процесса

Моделирование BPEL-процесса

Моделирование BPEL-процесса в среде ActiveBPEL Designer можно запустить, нажав на кнопку панели инструментов Start Simulation of the Process. При этом среда перейдет в режим отладки. Используйте кнопку Step Over на вкладке Debug для пошагового выполнения процесса. Текущие значения переменных можно увидеть на вкладке Process Variables – выберите пункт контекстного меню Open All, чтобы открыть все используемые переменные для просмотра. На вкладке Console выводятся отладочные сообщения о ходе выполнения процесса. Чтобы убрать с диаграммы информацию о текущем выполнении процесса нажмите кнопку, находящуюся рядом с кнопкой запуска моделирования.

Промоделируйте BPEL-процесс с разными значениями переменных, чтобы проверить различные пути выполнения.

Пример выполнения

Предметная область: заказ транспортных перевозок в пределах США. На входе – почтовый индекс места отправления и места прибытия. На выходе – цена за один контейнер.

Сторонний веб-сервис http://webservices.imacination.com/distance/Distance.jws?wsdl – определяет расстояние по двум почтовым индексам. На выходе – расстояние в милях или 0, если указаны некорректные данные.

Собственный сервис: определение стоимости. На входе – расстояние, на выходе – цена в долларах, вычисляемая как расстояние помноженное на 50.

Рисунок 4 – Черновик диаграммы процесса

WSDL-описание для BPEL-процесса – см. Рисунок 2.

WSDL-описание для собственного сервиса:

Диаграмма BPEL-процесса – см. Рисунок 3.

Снимок экрана в процессе моделирования:

Результаты

В результате выполнения работы было создано WSDL-описание для BPEL-процесса и веб-сервиса, используемого этим процессом, разработан и промоделирован BPEL-процесс, соответствующий бизнес-процессу из выбранной предметной области.

Вопросы для самоконтроля

  1. Чем BPEL-процесс отличается от веб-сервиса? В чем сходства?
  2. Какие факторы нужно учитывать при принятии решения о том, как реализовать бизнес-процесс – на языке BPEL или в виде Java-веб-сервиса, вызывающего другие сервисы?
  3. Какие сложности могут возникнуть при реализации на языке BPEL бизнес-процесса, включающего человеко-машинные взаимодействия? Предложите способы их преодоления.
  4. Что нужно знать, чтобы воспользоваться публичным веб-сервисом?
  5. Какую информацию можно найти в WSDL-описании веб-сервиса?
  6. Перечислите основные типы блоков BPEL-процесса и их назначение.
  7. Как избавиться от необходимости вставлять блоки Assign между вызовами веб-сервисов?
  8. Почему WS-I не рекомендует использовать в веб-сервисах стиль RPC/Encoded? Почему RPC/Encoded веб-сервисы проще отлаживать в ActiveBPEL Designer?

Обновлено Tue Apr 15 21:27:20 2014 +0400