Лабораторная работа №1

Введение в BPM с использованием jBPM

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

Бизнес процессы позволяют моделировать бизнес задачи путем описания шагов, которые необходимо выполнить для достижения цели, а также их последовательности с применением диаграмм (flowchart). jBPM ориентирован на выполняемые бизнес-процессы, что позволяет сократить разрыв между пользователями и разработчиками, поскольку они являются высокоуровневыми и оперируют предметно ориентированными концепциями, которые понятны бизнес-пользователям, но также могут быть непосредственно выполнены.

Ядром jBPM является легковесный расширяемый контейнер бизнес-процессов разработанный на Java и позволяющий выполнять бизнес-процессы представленные с помощью нотации BPMN 2. Они могут быть запущены в любой Java-среде как в приложении так и в качестве сервисов.

В качестве надстройки над ядром предоставляется большое количество средств для поддержки бизнес-процессов на всех этапах их жизненного цикла:

eclipse- и web-ориентированный редактор для поддержи создания бизнес-процессов в графическом режиме (drag&drop);

подключаемые persistence и транзакции построенные с применением JTA/JPA;

подключаемый сервис пользовательских (ручных) задач, построенный на WS-HumanTask для подключения задач, которые требуют непосредственной обработки пользователями;

НЕ нашли? Не то? Что вы ищете?

консоль управления, которая предоставляет функциональность по управлению экземплярами процессов, управлению списками задач и формами задач, а также составление отчетов;

дополнительно поддерживается репозиторий процессов для размещения разработанных процессов (и других знаний о процессах);

функциональность журнализации (запросы, мониторинг, анализ);

интеграция с Seam, Spring, OSGi и другими продуктами.

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

jBPM не является изолированным контейнером процессов. Сложная бизнес-логика может быть моделирована как комбинация бизнес-процессов с бизнес-правилами и сложной обработкой событий. JBPM может взаимодействовать с Drools проектом для поддержки единой унифицированной среды, которая интегрирует эти парадигмы. В таком случае бизнес-логика может быть представлена как комбинация процессов, правил и событий.


Рисунок 1 — Структура системы с применением jBPM

Рис. 1 показывает различные компоненты jBPM проекта. jBPM может быть интегрирован с большим количеством сервисов (они представлены серыми компонентами). Основными компонентами jBPM проекта являются:

1. Контейнер процессов (Core Process Engine) является центральным компонентом проекта и необходим для выполнения бизнес-процессов (остальные компоненты являются необязательными). Сервисы приложения вызывают контейнер процессов (к примеру для запуска процессов или отправки сообщений):

ñ дополнительным центральным сервисом может быть History Log, который логгирует информацию о текущем и предыдущих состояниях экземпляров процессов;

ñ Human Task Service предоставляет средства управления жизненным циклом пользовательских (ручных) задач если пользователи (human actors) участвуют в процессе.

2. JBPM поддерживает два графических редактора для определения бизнес-процессов:

ñ Eclipse plugin предназначен в большей степени для разработчиков и позволяет создавать бизнес-процессы с применением drag&drop, расширенной отладки и т. п.;

ñ web-based designer позволяет бизнес-пользователям управлять бизнес-процессами в web-ориентированной среде.

3. Репозиторий Gunvor является дополнительным компонентом который может быть использован для хранения всех бизнес-процессов. Он поддерживает кооперацию (взаимодействие), управление версиями и т. п.. Поддерживается интеграция с Eclipse plugin и web-based designer, взаимодействие между различными приложениями.

4. JBPM consoleweb-ориентированная консоль которая позволяет бизнес-пользователям управлять их бизнес-процессами (запускать новый процессы, инспектировать запущенные экземпляры), списками задач и просматривать отчеты.

Более подробное каждый из компонентов описан в:

http://docs. jboss. org/jbpm/v5.2/userguide/ch01.html

Контейнер процессов может быть встроен в проект как его часть или размещен как сервис (к примеру в «облаке»). Наиболее важными его особенностями являются:

ñ целостный, стабильный механизм выполнения процессов;

ñ встроенная поддержка BPMN 2.0 для моделирования и выполнения бизнес-процессов;

ñ акцент на производительность и масштабируемость;

ñ легковесность — процессы могут выполняться в любой среде, которая поддерживает Java;

ñ подключаемая поддержка транзакций с стандартной реализацией JTA;

ñ подключаемая поддержка persistence с использованием JPA;

ñ разработан как обобщенный контейнер процессов, таким образом он может быть расширен новыми типами узлов и языками описания процессов;

ñ возможность миграции запущенных экземпляров процессов к новым версиям определения процессов.

Контейнер процессов может быть интегрирован с некоторыми (независимыми) сервисами:

ñ Сервис пользовательских задач (Human Task Service) может быть использован для управления ручными задачами, когда необходимо вовлечение человека (пользователя) в процесс. Данная функциональность является подключаемой, основанной на спецификации WS-HumanTask управляет жизненным циклом задач, списков задач, формами задач и другими дополнительными задачами, как-то: приоритеты (escalation), делегированием, основанными на правилах назначениями и т. д.;

ñ Журнал истории (History Log) позволяет хранить всю информацию о выполнении процессов в контейнере. Это необходимо для доступа к информации о истории выполнения. Журнал позволяет хранить как текущую так и историческую информацию, связанную с выполнением экземпляров процессов с целью мониторинга, анализа и др.

Данный редактор является Eclipse IDE plugin'ом позволяющим интегрировать бизнес-процессы в среду разработки. Данный плагин предназначен для разработчиков и включает в себя несколько мастеров для начальных этапов разработки, графический редактор для создания бизнес-процессов и широкий набор возможностей для тестирования и отладки.


Рисунок 2 — Интерфейс встроенного редактора

Редактор включает в себя следующие средства:

ñ мастер создания нового jBPM проекта;

ñ графический редактор процессов в нотации BPMN 2.0

ñ средства подключения узлов, специфичных для конкретной предметной области (ПрО);

ñ средства валидации;

ñ средства поддержки среды выполнения (возможность выбора используемой версии jBPM);

ñ средства графической отладки для просмотра всех активных экземпляров процессов в выбранной сессии;

ñ представление для аудита состояния среды выполнения (Audit view);

ñ средства для модульного тестирования бизнес-процессов;

ñ интеграция с репозиторием знаний.

Web-ориентированный редактор позволяет моделировать бизнес-процессы в web-ориентированной среде. В первую очередь он предназначен для бизнес-пользователей и предоставляет графический редактор для просмотра и редактирования бизнес-процессов аналогичный Eclipse plugin'у. Поддерживается взаимодействие с Eclipse plugin'ом и web-ориентированным редактором.


Рисунок 3 — Интерфейс web-ориентированного редактора

Дополнительно допускается возможность использования одного или нескольких репозиториев знаний для хранения бизнес-процессов. Данный редактор интегрирован с Gunvor репозиторием, который предназначен для бизнес-пользователей и позволяет управлять процессами отдельно от приложения. Он поддерживает:

ñ сервис репозитория для хранения бизнес-процессов и связанных с ними артефактов, используется JCR репозиторий, который поддерживает управление версиями, удаленный доступ как к файловой системе или использование REST сервисов и т. д.;

ñ web-ориентированный интерфейс для управления бизнес-процессами предназначенный в первую очередь для бизнес-пользователей, поддерживающий визуализацию (а также редактирование) процессов, а также категоризацию, управление сценариями, развертывание и т. д.;

ñ возможность кооперации для совместной работы с нескольких актеров (к примеру: бизнес-пользователи и разработчики) с одним описанием процесса;

ñ A knowledge agent to easily create new sessions based on the process definitions in the repository. This also supports (optionally) dynamically updating all sessions if a new process has been deployed.

Управление бизнес-процессами может производиться посредством консоли, представляющей собой web-приложение. Она предназначена для бизнес-пользователей и предоставляет такие возможности:

ñ управление экземплярами процессов: возможность запуска нового экземпляра процесса, получения списка запущенных экземпляров процессов, получения состояния конкретного экземпляра процесса;

ñ управление ручными задачами: возможность получения списка всех текущих задач, выполнения задач из списка (с использование кастомизированных форм для задач) и т. д.;

ñ формирование отчетов: получение данных о состоянии приложения и/или системы с использованием динамически генерируемых отчетов, которые дают возможность получить информацию о состоянии ключевых индикаторов производительности (key performance indicators — KPIs).

Требования jBPM

Для установки jBPM необходимо наличие установленного JDK версии 1.5 или выше, а также Ant версии 1.7 либо выше. Данные приложения можно получить по ссылкам:

ñ Java: http://java. /javase/downloads/index. jsp

ñ Ant: http://ant. apache. org/bindownload. cgi

Загрузка инсталлятора

Инсталлятор можно получить по ссылке:

ñ http:///projects/jbpm/files/jBPM%205/jbpm-5.2.0.Final/

Рекомендуется использовать архив jbpm-5.2.0.Final-installer-full. zip, поскольку он содержит все необходимые средства для работы с jBPM и не требует загрузки их в процессе установки.

Установка демонстрационного приложения

Простейшим способом установить jBPM является выполнение команды ant install. demo в командной строке. В данном случае будут выполнены:

ñ загрузка сервера приложений jBoss AS;

ñ загрузка Eclispe;

ñ установка Drools Guvnor в JBoss AS;

ñ установка Oryx Designer в JBoss AS;

ñ установка jBPM gwt-console в JBoss AS;

ñ установка jBPM Eclipse plugin;

ñ установка Drools Eclipse plugin.

После завершения установки приложений можно выполнить команду ant start.demo для запуска сервисов и начала работы с пакетом.

Данная команда выполняет:

ñ запуск БД H2;

ñ запуск JBoss AS;

ñ запуск Eclipse;

ñ запуск Human Task Service.

После запуска вышеуказанных приложений можно приступать к работе с средствами Eclipse, репозиторием Gunvor и консолью jBPM.

Использование средств разработки Eclipse jBPM plugin

На этом видео показано как запустить тестовый процесс в среде eclipse. На нем представлено, как:

1. как импортировать существующий проект в workspace, содержащий:

ñ процесс запроса оценки производительности, описанный средствами BPMN 2.0;

ñ


Java класс для запуска процесса.

Рисунок 4 – Eclipse с средствами jBPM

2. как запустить процесс.

Для работы с примером описания процесса необходимо выполнить следующие действия:

1. после запуска eclipse импортировать проект из папки jbpm-installer/sample/evaluation. Это приведет к появлению проекта в workspace;

2. проект содержит описание процесс в нотации BPMN 2.0 и java-класс;

3. после импорта проекта можно начать работу с отладчиком процессов с применением средств визуализации отладки. Для этого нужно поставить точку остановки (brakepoint) в строке «logger.close()» класса ProcessTest. Запуск проекта можно выполнить с помощью команды "Debug As - Java Application";

4. добавить представления Process Instances View, Process Instance View (в категории Drools) and the Human Task View (в jBPM Task);

5. приложение остановится в точке остановки после запуска процесс. В данном случае можно просто запустить процесс, которые приведет к созданию нового пользовательского (ручного) задания для пользователя «krisv» в сервисе пользовательских задач, после этого процесс будет ожидать выполнения данной задачи. Зайдите в Human Task View, укажите "krisv" в качестве UserId и нажмите Refresh. Новая задача по оценке производительности будет создана и отображена;

6. для получения информации о состоянии процесса необходимо открыть Process Instances View и выбрать сессионную переменную в Variables View. В этом случае будут показаны все активные экземпляры процессов в выбранной сессии, на данном этапе будет только один экземпляр процесса. По двойному щелчку на процессе можно получить текущее состояние экземпляра процесса на диаграмме.

7. Теперь можно вернуться к Task View, выбрать задачу Performance Evaluation и запустить, а после этого завершить выбранную задачу. После можно этого вернуться к Process Instances и посмотреть текущее состояние экземпляра процесса.

Также можно создавать проекты с помощью мастера проектов jBPM. Доступ к мастеру jBPM можно получить из меню создания артефактов в eclipse.

Использование консоли jBPM

Доступ к консоли можно получить перейдя по следующему url:

http://localhost:8080/jbpm-console

Рисунок 5 – Интерфейс jBPM консоли

Изначально для консоли существует пользователь с логином/паролем krisv/krisv. Следующий screencast показывает основные возможности jBPM консоли по управлению экземплярами бизнес-процессов, такие как:

· запуск нового процесса;

· просмотр текущего состояния работающего экземпляра процесса;

· просмотр списка пользовательских задач;

· завершение задач;

· генерация отчетов и мониторинг выполнения процессов.

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

· для управления экземплярами процессов нужно нажать на вкладку "Processes" и выбрать "Process Overview", послен небольшой задержки список "Processes" покажет все «известные» процессы. jBPM консоль в рамках демонстрационной установки показывает все процессы из папки "src/main/resources" демонстрационного примера. Если выбрать процесс будут показаны все его запущенные экземпляры.

· Для запуска нового экземпляра процесса нужно нажать кнопку «Start». После подтверждения запуска будет показан форма процесса с возможностью указания информации, необходимой для запуска процесса. В данном случае нужно задать имя “krisv” и причину для запроса, после этого можно подтвердить закрыть форму. Новый экземпляр процесса должен быть отображен в таблице "Instance". При выборе экземпляра процесса можно увидеть детальную информацию о процессе, а также увидеть диаграмму и данные о экземпляре по нажатию на кнопки "Diagram" и "Instance Data". Запущенный экземпляр процесса требует оценки пользователем и будет ожидать завершения процесса пользователем.

· Для просмотра задач назначенных пользователю нужно выбрать вкладку "Tasks" и выбрать "Personal Tasks". В таблице будет показана задача "Performance Evaluation", которая может быть завершена нажатием кнопки "View". Это приведет к появлению формы оценки производительности, в которой можно указать необходимые значения оценок, завершить задачу и закрыть окно. После завершения задачи пользователь может открыть "Process Overview" для проверки состояния экземпляра процесса. В данном случае можно увидеть, что процесс ожидает оценки от HR менеджера и менеджера проекта. Для выполнения этих задач можно войти в система с помощью аккаунтов "john" / "john" и "mary" / "mary".

· После запуска и/или завершения нескольких экземпляров процессов и ручных задач можно сгенерировать отчет о событиях в системе. Для этого необходимо выбрать "Reporting" \ "Report Templates". По-умолчанию консоль предоставляет один шаблон отчета, представляющий собой стандартный отчет для всех процессов. Кнопка "Create Report" сгенерирует отчет о текущем состоянии процессов.

Использование репозитория и дизайнера Gunvor

Репозиторий Gunvor используется в качестве репозитория для хранения бизнес-процессов. Он предоставляет web-интерфейс для управления процессами, а также web-ориентированный редактор для просмотра и редактирования процессов.

Для открытия Drools Gunvor нужно перейти по ссылке:

http://localhost:8080/drools-guvnor

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

· импорт существующих процессов из eclipse в guvnor;

· открытие процесса оценки в web-редакторе;

· сборка пакета.

Рисунок 6 – Интерфейс репозитория

Для завершения работы демонстрационного примера следует выполнить команду ant stop. demo .