Process-editor User guide ru
RUNA WFE. Графический редактор бизнес-процессов. Руководство пользователя.
Версия 3.0
© 2004-2009, ЗАО “Руна ”. RUNA WFE является системой с открытым кодом и распространяется в соответствии с LGPL лицензией (http://www.gnu.org/licenses/lgpl.html).
Введение
RUNA GPD 3.0 – это графический редактор бизнес-процессов для открытой системы управления бизнес-процессами Runa WFE 3.0. RUNA GPD является частью открытого проекта Runa WFE, свободно распространяется под LGPL лицензией. Редактор можно свободно загрузить вместе с исходными кодами с портала sourceforge по адресу http://sourceforge.net/project/showfiles.php?group_id=125156&package_id=172067
В настоящем документе описывается как разрабатывать бизнес-процессы при помощи RUNA GPD 3.0[1].
Инструкция по установке
RUNA GPD распространяется в виде исходных кодов и как набор исполнимых файлов – каждый набор соответствует платформе (Linux, Windows и т.д.).
-
-
- == Необходимое программное обеспечение ==
-
- JRE or JDK 5.0 или выше, может быть загружено: http://java.sun.com/j2se/1.5.0/download.jsp
- Web-браузер
Замечание. В случае операционной системы Linux и Web-браузера Mozilla Firefox для корректной работы встроенного в редактор конструктора форм в папке, в которую установлена мозилла надо найти файл конфигурации firefox.js (В случае дистрибутива AltLinux путь к файлу: usr/lib/firefox/defaults/pref/firefox.js). В этом файле надо установить:
Dom.disable_window_status_change - false
Установка и запуск RUNA GPD (случай набора исполнимых файлов)
- Установите JDK (http://java.sun.com/j2se/1.5.0/install.html)
- Разархивируйте runa-gpd-*.zip архив и перейдите в gpd-x.x.x папку
- Запустите runa-gpd (в случае Windows – runa-gpd.exe)
Замечание. Для запуска редактора в в многопользовательском режиме надо вызвать исполнимый файл с опцией -data и параметром - ссылкой на папку, в которой будут находиться данные:
runa-gpd -data "ссылка
Например: ./runa-gpd -data "I:/MyProcesses
Сборка из исходных кодов
Необходимое программное обеспечение
- JDK 5.0 или выше, может быть загружено: http://java.sun.com/j2se/1.5.0/download.jsp
- Eclipse IDE 3.2.1, может быть загружено: http://www.eclipse.org/downloads/
- Eclipse WTP 1.5.4 with all required plug-ins, может быть загружено: http://download.eclipse.org/webtools/downloads/drops/M-0.7.1-200509270720/
Установка RUNA GPD
- Установите JRE или JDK (http://java.sun.com/j2se/1.5.0/install.html)
- Установите Eclipse IDE и WTP plug-ins
- Скачайте исходные коды RUNA GPD
- Запустите Eclipse
- Поместите исходные коды RUNA GPD в Eclipse workspace
- Запустите плагин RUNA GPD при помощи файла gpd.product из пакета org.jbpm.ui.
Создание нового проекта процессов
- Выберите пункт меню Файл > Создать > Новый проект - появится wizard заведения нового проекта процессов.
2. Введите имя проекта “HelloWorldProject”.

Будет создан проект HelloWorldProject.
Создание процесса HelloWorld[2]
Сценарий
- При запуске процесса появляется стартовая форма HelloWorld.
- После клика на команду “запустить” процесс запускается и тут же переходит в состояние завершения.
Разработка графа процесса
Откройте контекстное меню правой кнопкой мыши, кликнув на HelloWorldProject, затем кликните на «Новый процесс».
Введите HelloWorldProcess в качестве имени процесса:

и кликните «Finish». Будет создан процесс HelloWorldProcess.
Щелкните двойным кликом на HelloWorldProcess. Откроется диаграмма процесса:
Кликните на свойства/показать сетку, появится сетка. Кликните на элементе “Начало” палитры, затем кликните на окне диаграммы. Стартовый узел процесса появится в окне диаграммы. Аналогично поместите на диаграмму завершающий узел процесса “Окончание”, кликните на элемент “Переход” и соедините узлы «Начало» и «Окончание».
Кликните на свойства/показать сетку – сетка исчезнет, в соответствующих полях свойств введите краткое описание процесса (не обязательно) и пиктограмму изображения процесса (не обязательно). - Граф процесса готов.
Создание ролей
Введение
Swimlanes (роли) соответствуют ролям бизнес-процесса. В JBoss jBPM swimlane (роли) являются специальным видом переменных бизнес-процесса. Каждому узлу-действию в бизнес-процессе должна быть поставлена в соответствие роль. Начальный узел процесса (start state) имеет отличное от остальных узлов поведение в части инициализации ролей: Стартовый узел не использует инициализатор - роль, указанная в стартовом узле, инициализируется пользователем, запустившим бизнес-процесс. В отличие от этого остальные узлы-Действия используют роли для того, чтобы определить, кто может выполнять задание в данном узле-Действии.
Задание роли для процесса HelloWorld
Процесс состоит только из двух узлов: Начало и Окончание. Для состояния окончания процесса роль не нужна. Поэтому в процессе будет только одна роль.
Выбирите вкладку «Роли». Появится следующая форма:
Кликните на кнопке “Создать”. В появившейся форме введите“requester”.

Кликните на ОК.
Кликните на закладке «Граф». На графе процесса кликните на узле «Начало», в свойствах узла кликните на поле, находящееся на пересечении Роль-Value, откройте появившейся список и выберите в нем строку requester:
Имя роли появится в круглых скобках над названием узла процесса:
Создание графической формы
Формы
Узлам-действиям, исполнителями заданий в которых являются сотрудники (не боты) должны быть поставлены в соответствие формы. Формы задаются в виде HTML- тегов с одним дополнительным тегом: <customtag>. Этот тег используется для отображения специфических элементов и отображения значений переменных бизнес-процесса в формах.
У тега <customtag> есть следующие атрибуты:
- var – имя переменной бизнес-процесса
- delegation – имя Java класса, использующегося для работы с переменной
Создание формы
У процесса HelloWorld нет переменных и есть только одна форма – стартовая форма. Кликните на узел «start» графа бизнес-процесса правой кнопкой мыши и выберите команду «Форма» → «Создать форму» (левой кнопкой мыши):
В появившимся выпадающем списке выберите тип формы «fml».
После появления окна редакторвания кликните на вкладку дизайн:
В окне конструктора форм введите Hello World!
Выберите соответствующие шрифт, размер, положение на странице:
Замечание. Перейдя на вкладку «Код», можно увидеть страницу в виде HTML:
Закройте вкладку формы, подтвердив ее сохранение в диалоге.
Создание файла-архива бизнес-процесса
Выберите HelloWorldProcess, выполните команду Файл/Экспорт to create .par process archive.
В появившейся форме нажмите кнопку «Browse…», укажите каталог и введите имя файла архива бизнес-процесса:

Выполните “finish”. В файловой системе будет сформирован файл-архив бизнес-процесса HelloWorldProcess: HelloWorldProcess.par.
Загрузка бизнес-процесса в систему управления бизнес-процессами
Войдите в систему управления бизнес-процессами RUNA WFE как Administrator (Пароль администратора по умолчанию - «wf», см. инструкцию по установке RUNA WFE 2.1).
Войдите в меню «Определения процессов».
Кликните на ссылку «Загрузить определение процесса»[3]. В появившемся диалоге выберите в файловой системе сформированный в редакторе файл-архив бизнес-процесса - HelloWorldProcess.par, впишите тип процесса - «демо» и нажмите «выполнить».
Процесс HelloWorldProcess будет загружен в систему:
Выполнение процесса
Кликните на имя процесса. Вы увидите стартовую форму:
Кликните на команду «Запустить». Процесс будет запущен и тут же завершится. Можно будет посмотреть экземпляр процесса в меню «Экземпляры процессов»:
Кликните на экземпляр процесса – вы увидите свойства процесса:
Создание процесса «Overtime Work»
Сценарий процесса
Руководитель предлагает сотруднику выйти на сверхурочную работу. Сотрудник соглашается или отказывается. Далее руководитель знакомится с решением сотрудника.
Предполагается, что руководитель является членом группы “manager”, а сотрудник является членом группы “staff”.
Разработка графа бизнес-процесса
Создайте новый проект «OwertimeWork», затем кликните левой кнопкой мыши на команду «Новый процесс». Введите в появившемся диалоге “over time work demo” в качестве имени процесса. Сделайте двойной клик на появившейся строке «over time work demo». Появится окно диаграммы бизнес-процесса. Выбирая элементы палитры, нарисуйте следующий граф бизнес-процесса:
Для задания подписи элемента отличной от подписи по-умолчанию, выделите элемент кликнув на него, и еще раз кликните на элементе.
Для переходов, выходящих из узла исключающего выбора «Is accepted?» в их свойствах задайте явные имена «accepted» и «rejected»:
Создание ролей
Роли
Поведение ролей в начальном и конечном состояниях бизнес-процесса было описано в предыдущем разделе. В других состояниях при помощи ролей определяются исполнители заданий.
Роль (или роль-дорожка) – это специальный тип переменной бизнес-процесса. Роль может быть инициализирована пользователем или группой пользователей в любой момент выполнения бизнес-процесса. К моменту перехода управления в некоторый узел роль, связанная с этим узлом, должна быть инициализирована. Если роль инициализирована пользователем, то после прихода управления в этот узел только этот пользователь получит задание. Если роль инициализирована группой пользователей, то после прихода управления в этот узел все члены группы получат задание. Однако выполнить задание сможет только один член группы, - тот, который первым кликнет на «выполнить». После этого будет произведена доинициализация роли этим пользователем и далее роль будет инициализирована уже не группой, а данным пользователем.
Для автоматической инициализации роли в момент прихода управление в узел-действие служит специальный механизм инициализации, основанный на функциях над организационной структурой, которые возвращают пользователя или группу пользователей, которому будет направлено задание. В системе можно определить набор таких функций. Эти функции также могут зависеть от параметра.
Также можно явно инициализировать роль некоторым значением, например , присвоить значение роли как переменной бизнес-процесса через графическую форму.
«Внутри» бизнес-процесса функции над организационной структурой (далее - оргфункции) должны быть определены в соответствии с используемым в системе RUNA WFE языком jPdl. Для работы с оргфункциями в редакторе бизнес-процессов разработаны соответствующие наборы форм.
Если параметрами оргфункций являются значения переменных бизнес-процесса, то имена этих переменных должны быть «окружены» следующей конструкцией: ${<имя переменной>}.
Задание ролей для процесса «over time work demo»
В бизнес-процессе есть две роли:
- manager
- staff
Описание ролей:
| Роль | Описание |
| manager | Руководитель, которые запускает процесс |
| staff | Сотрудник, которого руководитель выбирает в стартовой форме и которому направляется предложение о сверхурочной работе |
Связь узлов графа бизнес-процесса и ролей:
| Узел | Роль |
| Offer an overtime work (предложить сверхурочные работы) | manager |
| Make a decision (принять решение) | staff |
| Notify for declining (ознакомиться с сообщением об отклонении) | manager |
| Notify for acceptance (ознакомиться с сообщением о согласии) | manager |
Создание ролей
Кликните на вкладку «роли».
На появившейся странице кликните на кнопку «Создать».
В появившейся форме введите название роли «manager» и кликните на «ОК», т.к данная роль-дорожка будет использована в стартовом состоянии – т.е. инициализирована пользователем, запустившим процесс. Поэтому роли-дорожке manager не требуется инициализатор.
Аналогично добавьте роль «staff».
Замечание. Примеры задания инициализаторов будут отдельно рассмотрены далее в данном документе.
Откройте опять вкладку «Граф», выберите стартовый узел-действие “Offer an overtime work”. В свойствах кликните на правую часть поля Роль/Value. В появившемся списке выберите “manager”.
Аналогично задайте роли во всех остальных узлах-действиях.
Создание переменных
Описание и инициализация переменных
В бизнес-процесе используются следующие переменные:
| Переменная | Тип | Описание |
| since | Дата-время | Дата-время начала сверхурочных |
| till | Дата-время | Дата-время окончания сверхурочных |
| reason | Строка | Причина |
| comment | Многострочный текст | Комментарий |
| staffPersonDecision | Логический | Решение сотрудника |
| staffPersonComment | Многострочный текст | Комментарий сотрудника |
Переменные
- since
- till
- reason
- comment
- staff[4]
должны быть проинициализированы значениями в стартовом узле-действии “Offer an overtime work”.
Переменные
- staffPersonDecision
- staffPersonComment
должны быть проинициализированы в узле “Make a decision”
Создание переменных
Кликните на вкладке «Переменные». Кликните на кнопке «Создать»
Введите название переменной – since, в качестве формата выберите DateTimeFormat.

Аналогично заведите все остальные переменные бизнес-процесса.
Задание формулы для элемента «Исключающий выбор»
Описание формулы
В случае, если значение переменной staffPersonDecision (решение сотрудника) - «истина», точка управления должна перейти в узел-действие «Notify for acceptance» (ознакомиться с сообщением о согласии). В противном случае точка управления должна перейти в узел-действие «Notify for declining» (ознакомиться с сообщением об отклонении).
Создание формулы в редакторе RUNA GPD
Выберите закладку «Граф», кликните на узел исключающего выбора «Is accepted?». В свойствах узла выберите поле, находящееся на пересечении Класс-Value. Кликните на командную кнопку, появившуюся в правой части этого поля. Откроется форма выбора обработчика для решения:

Выберите BSFDecisionHandler и нажмите OK. Название обработчика появится в свойствах узла.
Правой кнопкой мыши кликните на элементе и выберите пункт «Изменить».
В появившейся форме для перехода accepted выберите переменную staffPersonDecision, установите операцию сравнения «равно» и значение «true». Для перехода rejected выберите переменную staffPersonDecision, установите операцию сравнения «не равно» и значение «true». Для «если ни одно из условий не выполнено» установите переход «rejected»:

Кликните «OK». Формула для узла исключающего выбора задана.
Замечание. При желании можно посмотреть код формулы. Для этого в данной форме выберите закладку «Код BSH»:

Создание графических форм
Описание форм RUNA WFE
Узлам-действиям, исполнителями заданий в которых являются сотрудники (не боты) должны быть поставлены в соответствие формы. Каждая форма записывается в отдельном файле. Формы задаются в виде HTML- тегов с одним дополнительным тегом: <customtag>. Этот тег используется для отображения специфических элементов и отображения значений переменных бизнес-процесса в формах.
У тега <customtag> есть следующие атрибуты:
- var – имя переменной бизнес-процесса
- delegation – имя Java класса, использующегося для работы с переменной
В процессе Overtime Work используются следующие классы:
| Class | Description |
|---|---|
| GroupMembersComboboxVarTag | Показывает список членов группы. Имя группы должно совпадать с именем некоторой переменной бизнес-процесса (и соответственно пареметром «var» тега). Возвращает ID выбранного члена группы. В процессе Overtime Work используется группа (и, соответственно, переменная) “staff”. |
| DateTimeInputVarTag | Создается поле для ввода даты-времени |
| ActorFullNameDisplayVarTag | Показывает имя пользователя. Параметр «var» тега должен ссылаться на переменную, содержащую ID пользователя. |
| DateTimeValueDisplayVarTag | Выводит значение переменной типа дата-время (показывается в режиме «только чтение»). |
| VariableValueDisplayVarTag | Выводит значение переменной типа строка или число (показывается в режиме «только чтение»). |
Создание графических форм при помощи конструктора форм
Кликните на стартовый узел «Offer an overtime work» графа бизнес-процесса правой кнопкой мыши и выберите команду «Форма» → «Создать форму» (левой кнопкой мыши):
Выберите тип формы «html».
Появится окно редактирования, в котором форму можно задать в виде HTML, расширенном на тег <customtag> (см. предыдущий раздел).
Однако гораздо удобнее создавать форму в графическом режиме. Для этого кликните на вкладке дизайн. Появится следующий интерфейс:
Введите текст «Offer an overtime work», на следующей строке введите «Employee *» и кликните на элемент
. В появившейся форме в качестве названия элемента формы введите «staff», в качестве элемента формы выберите «Члены группы»:
Кликните на «ОК». На форме появится элемент «ФИО СОТРУДНИКА»:
Аналогичным образом создайте элементы для ввода других переменных бизнес-процесса:
- since
- till
- reason
- comment
Замечание. Перейдя на вкладку «Код», можно увидеть страницу в виде HTML:
Аналогично создаются остальные формы для остальных узлов-действий
- Make a decision
- Notify for declining
- Notify for acceptance
Форма для узла «Make a decision»:
Задание проверок значений, введенных в элементы форм
Элементы форм могут быть обязательными или не обязательными для ввода. Также могут быть правила, относящиеся к нескольким элементам форм. Например - «дата с» не может быть позже, чем «дата по». Кроме того, могут быть специфические для типов ограничения: для чисел – менше или больше какого-то числа, для строк – ограничение на длину строки и т.д.
Для задания проверки значения полей формы «Offer an overtime work» кликните на узле правой кнопкой мыши, в появившейся форме выберите «Переменные формы (валидация)»:
В появившейся форме будут отображены все использующиеся в бизнес-процессе переменные. Все использующиеся в текущей форме переменные будут помечены галочкой.
Для выбранного поля в окне «Валидаторы» будут находиться доступные типы проверок поля. При клике на конкретную проверку в нижнем окне можно будет посмотреть и отредактировать параметры этой проверки:

Например, в данном случае для проверки «ограничитель длины строки» установлена максимальная длина 100 символов, в качестве сообщения об ошибке использовано «Длина не может превышать 100 символов»
Если требуется установить проверки на совместные значения нескольких полей, после установки всех проверок на одно поле кликните «Next».
В появившейся форме при помощи «мастера» можно установить совместные проверки значений полей. Например, что Дата Till не должна быть позже даты since:

Создание файла-архива бизнес-процесса и загрузка его в систему
Последовательность действий полностью повторяет последовательность, описанную для процесса разработки бизнес-процесса «HelloWorldProcess».
Замечание. Для выполнения процесса «Overtime Work» необходимо создать в Workflow системе группы пользователей:
- manager
- staff
- all
завести конкретных пользователей этих групп и раздать соответствующие права (см. руководство пользователя системы Runa WFE).
Работа с ActionHandler
В системе Runa WFE есть возможность вызвать выполнение java-кода при наступлении определенных событий в бизнес-процессе, например, проход точки управления по определенному переходу. Java код должен быть реализован в методе execute() класса, реализующего интерфейс ActionHandler. Этот класс должен быть загружен в систему.
Для привязывания к переходу класса, реализующего интерфейс ActionHandler в редакторе бизнес-процесов надо проделать следующее:
1. Выделить переход (transition).
2. По правому клике мыши на нем «Обработчики» → «Создать»
3. В свойствах созданного действия выбрать класс соответствующий ActionHandler-класс и указать (если необходимо) конфигурацию
Как добавить в редактор имена классов для инициализаторов ролей-дорожек, форматов переменных, обработчиков для узлов-выбора и элементов ActionHandler.
Поместите .jar-файлы, содержащие соответствующие классы в подкаталог /plugins/org.jbpm.core_3.0.1/lib каталога, содержащего редактор бизнес-процессов.
Задание инициализаторов для ролей-дорожек.
Первый пример
В качестве примера задания инициализатора при создании новой роли рассмотрим создание роли «human resource inspector» для демо-процесса «Vacation».
На закладке «Роли» кликните «Создать». В появившейся форме введите «human resource inspector» в качестве названия роли-дорожки. Кликните «ОК».

Кликните по роли, нажмите кнопку «Изменить». В появившемся окне на вкладке «Код» выберите инициализатор «функция ExecutorByName» и в качестве параметра введите имя группы, содержащей сотрудников – инспекторов кадровой службы.

Кликните «ОК». Инициализатор новой роли при этом будет определен.
Второй пример
Приведем пример задания инициализатора роли-дорожки, параметром которого явлеяется значение переменной бизнес-процесса.
Рассмотрим создание роли «boss» (руководитель) для демо-процесса «Vacation».
На закладке «Роли» кликните «Создать». В появившейся форме введите «boss» в качестве названия роли-дорожки. Кликните «ОК».
Кликните по роли, нажмите кнопку «Изменить». В появившемся окне на вкладке «Код» выберите инициализатор DemoChiefFunction (руководитель сотрудника в случае демо-процессов). В качестве параметра введите строку «${requester}» - значение переменной requester.

Кликните «ОК». Инициализатор новой роли при этом будет определен.
Замечание. Для задания в качестве параметра значения переменной надо ввести в окно ввода параметра выражение: ${имя_переменной}.
Замещение имен java-классов русскоязычными названиями.
В системе Runa WFE и редакторе процессов можно заменить англоязычные названия java-классов русскоязычными названиями. Для этого надо сделать следующее:
1. Загрузите java-классы в редактор:
Поместите .jar-файлы, содержащие соответствующие классы в подкаталог /plugins/org.jbpm.core_3.0.1/lib каталога, содержащего редактор бизнес-процессов. Запустите редактор бизнес-процессов.
2. Запустите редактор, откройте пункт меню Свойства/Мапинг:

3. В появившейся форме кликните «Проверить новые jar'ы»
4. «Снимите» галочки у тех классов, которые не должны присутствовать в редакторе
5. Для замещения имени класса выделите строку и кликните «Редактировать»
6. В появившейся форме введите название для класса и кликните «OK»

7. Кликните «OK» на форме «Мапинг названий java классов»
- ↑ RUNA GPD генерирует .par-фалы - архивы. Каждый .par файл содержит определение бизнес-процесса на языке jPdl. Ссылка на документацию по jPdl: http://www.jboss.com/products/jbpm/docs/jPdl.
- ↑ Процесс состоит только из двух узлов: Start-state и Stop-state
- ↑ Замечание:Для того, чтобы загрузить определение бизнес-процесса в систему в вас должны быть права «Загружать определение процесса» (могут быть даны в меню система).
- ↑ Несмотря на то, что Staff является ролью-дорожкой, ее можно инициализировать как обычную переменную.





































