Начало работы с BPM
В этом разделе описывается, как смоделировать и запустить простой бизнес-процесс.
Предположим, что мы хотим создать процесс возмещения расходов.
В процессе будут задействованы три участника:
-
работник, который требует возмещения;
-
менеджер, который утверждает возмещение;
-
бухгалтер, который перечисляет деньги на счет работника.
Данная модель может быть представлена в нотации BPM:
Процесс моделирования
Запустите приложение и откройте экран BPM → Modeler. На панели свойств справа отображаются свойства текущего процесса.
Для нашего процесса укажите следующие свойства:
-
Process id:
reimbursement
-
Name:
Reimbursement
-
Documentation: Добавьте краткое описание процесса.
Создание стартовой формы
Каждый элемент на холсте обладает собственным набором свойств. Пока единственный элемент на холсте это StartEvent
. Он соответствует Стартовой форме которую увидит пользователь при запуске процесса. Давайте его настроим:
-
Нажмите на элемент
StartEvent
чтобы его выделить. -
В поле Form Type выберите
Input dialog
. В поле Open mode будет автоматически выбрано значение Dialog.
Далее необходимо указать параметры, которые увидит пользователь в диалоговом окне.
-
Нажмите и в диалоговом окне Input dialog parameter editor создайте параметр
requestNumber
со следующими свойствами:
-
Создайте еще три параметра диалогового окна:
Process variable Caption Type Editable Required expenseAmount
Expense amount
Decimal (double)
true
true
expenseDate
Expense Date
Date
true
true
document
Document
File
true
true
-
Создайте еще один параметр, позволяющий пользователям выбрать менеджера для утверждения заявки. Он потребует несколько дополнительных свойств:
Process variable Caption Type Editable Required Entity name UI Component JPQL query manager
Manager
Entity
true
true
User
ComboBox
оставьте пустым*
* Если поле не заполнено, будет использован запрос по умолчанию
select e from User e
. -
Установите значение
requestNumber
в поле Business key. Бизнес-ключ — это специфичный для домена идентификатор экземпляра процесса.
После добавления всех параметров, раздел Form должен выглядеть следующим образом:
Создание пользовательской задачи Approval
Создадим пользовательскую задачу утверждения Approval. Она соответствует форме утверждения заявки которую увидит менеджер.
В первую очередь, добавьте новый элемент на холст:
-
Нажмите на элемент
StartEvent
чтобы его выделить. -
Нажмите иконку Append task .
-
Нажмите иконку Change type и выберите User Task в выпадающем списке.
-
В панели свойств укажите следующие значения для задачи:
-
Id:
approval
-
Name:
Approval
-
Assignee source:
Process variable
-
Process variable:
manager
По умолчанию для назначения задачи доступна встроенная переменная процесса initiator
. Более подробную информацию см. в соответствующем разделе.
-
-
Перейдите в секцию Form и укажите следующие свойства:
-
Form type:
Input dialog
-
Open mode:
Dialog
(выбрано автоматически)
-
-
Нажмите и добавьте следующие имеющиеся параметры, но отключив при этом возможность для их редактирования:
Process variable Caption Type Editable Required requestNumber
Request number
String
false
true
expenseAmount
Expense amount
Decimal (double)
false
true
expenseDate
Expense Date
Date
false
true
document
Document
File
false
true
-
Нажмите и добавьте дополнительный параметр:
Process variable Caption Type Editable Required comment
Comment
Multiline string
true
false
Данный параметр будет соответствовать текстовому полю которое позволит менеджеру сделать пометки при утверждении или отклонении запроса на возмещение.
Создание выходов
Этап Approval имеет два возможных сценария развития: запрос одобрен или запрос отклонен. Соответственно, форма предназначенная для менеджера, принимающего решение, должна иметь две кнопки.
-
Убедитесь что выбран элемент Approval. Перейдите в свойства Outcomes и нажмите .
-
Задайте свойства для первого выхода:
-
Повторите действия чтобы создать второй выход:
Business id Caption Icon reject
Reject
BAN
Чтобы указать точку с несколькими альтернативными путями, добавьте элемент шлюза:
-
Выберите задачу Approval и нажмите Append Gateway чтобы добавить шлюз.
-
Выберите элемент шлюза и создайте новую пользовательскую задачу с помощью → → User Task.
-
Выберите элемент шлюза и нажмите чтобы создать элемент
EndEvent
. -
Дайте имена для связей соединяющих созданные элементы:
approved
andrejected
.
Теперь модель должна выглядеть следующим образом:
-
Выберите связь
approved
и укажите для неё свойства в разделе Condition:-
Condition source:
User task outcome
-
User task id:
Approval
-
User task outcome:
approve
-
-
Подобно предыдущему шагу укажите свойства для связи
rejected
:-
Condition source:
User task outcome
-
User task id:
Approval
-
User task outcome:
reject
-
Создание пользовательской задачи Payment
Вторая пользовательская задача в модели уведомляет бухгалтеров об одобрении заявки. Эта задача соответствует Форме оплаты предназначенной только для бухгалтеров.
-
Выберите вторую пользовательскую задачу на холсте и задайте свойства Id и Name:
-
Id:
payment
-
Name: Payment
-
Для этой задачи будет реализовано следующее поведение: она передается группе бухгалтеров, после чего любой из них может взяться за её выполнение. Для этого, вместо конкретного исполнителя имеется возможность указать Candidate groups или Candidate users
Давайте создадим Candidate group для бухгалтеров.
Прежде чем покинуть моделер, сохраните черновик задачи с помощью кнопки в панели инструментов. К черновикам можно вернуться позднее нажав кнопку . |
-
Перейдите на экран BPM → User groups и создайте группу
Accountants
указав для неё кодaccountants
. -
Установите Users как тип группы.
-
Добавьте пользователей в группу.
Пользователям участвующим в процессе должна быть назначена роль BPM: process actor для предоставления доступа к экранам и сущностям BPM, необходимым для запуска процесса и работы с пользовательскими задачами. Назначить роли можно на экране Application → Users.
|
-
Вернитесь в моделер и выберите пользовательскую задачу
Payment
. -
Рядом с полем Candidate groups нажмите кнопку редактирования .
-
В появившемся редакторе добавьте группу
Accountants
. -
Настройте диалог ввода для задачи
Payment
подобно тому как это было сделано для задачиApproval
. Установите следующие свойства:-
Form type:
Input dialog
-
Open mode:
Dialog
(this will be set by default)
-
-
Добавьте входные параметры. Они будут такие же, как и на форме
Approval
, однако для комментария менеджера необходимо отключить возможность редактирования:Process variable Caption Type Editable Required requestNumber
Request number
String
false
true
expenseAmount
Expense amount
Decimal (double)
false
true
expenseDate
Expense Date
Date
false
true
document
Document
File
false
true
comment
Comment
Multiline string
false
false
-
На холсте добавьте элемент
EndEvent
после задачиPayment
.
Указание пользователей для запуска процесса
Чтобы запустить процесс, пользователь должен принадлежать к специальной группе пользователей. В нашем случае, такая группа будет включать всех пользователей.
-
Перейдите на экран User groups и создайте группу со следующими свойствами:
-
Name: All users
-
Code: all-users
-
Type: All users
-
-
Вернитесь в моделер и щелкните по свободному месту на холсте, чтобы отобразить свойства процесса.
-
В поле Candidate groups установите значение
All users
.
Запуск процесса
Модель процесса готова к развертыванию.
-
Перейдите в моделер.
-
Нажмите Deploy process на панели инструментов.
-
Откройте экран BPM → Start Process.
Процесс Reimbursement должен появиться в списке. В этом списке представлены все процессы, которые может запустить текущий пользователь.
Тестирование процесса
Теперь, когда процесс смоделирован и развернут, его можно запустить. Давайте пройдемся по его этапам и рассмотрим представленные в нем процессные формы.
Стартовая форма
С заданными настройками процесс может быть запущен любым из пользователей на экране BPM → Start Process.
-
Выберите процесс Reimbursement и нажмите кнопку Start process.
-
Заполните поля в форме и нажмите кнопку Start process.
Назначенный менеджер увидит входящую задачу на утверждение.
Форма утверждения
Давайте рассмотрим, как процесс выглядит с точки зрения менеджера. На предыдущем шаге в качестве утверждающего был выбран менеджер james.
-
Войдите в приложение от имени менеджера.
-
Перейдите на экран BPM → My Tasks.
-
Выберите задачу из списка и откройте её нажав кнопку Open Task.
-
Рассмотрите заявку и нажмите кнопку Approve.
После одобрения запрос будет отправлен бухгалтеру, который затем позаботится об оплате.
Форма оплаты
Бухгалтеры увидят заявки, требующие оплаты, в разделе Group tasks.
-
Войдите в приложение от имени пользователя принадлежащего группе Accountants.
-
Перейдите на экран BPM → My Tasks. Раскройте пункт Group tasks.
-
Откройте форму оплаты.
Пока задача не назначена одному из бухгалтеров, форма будет доступна только для чтения.
-
Заявите о выполнении задания, используя один из двух способов:
-
Нажмите Claim and resume, чтобы немедленно приступить к следующему шагу задачи. При этом задача будет удалена из списка Group а в форме появится кнопка Complete task.
-
Нажмите Claim and close, чтобы заявить о выполнение задачи, отложив её выполнение. Форма будет закрыта, а задача перемещена из списка Group в список Assigned для текущего пользователя. После этого задача больше не будет видна другим бухгалтерам.
-
-
Нажмите Complete task, чтобы завершить процесс. Эта кнопка отображается по умолчанию для задач у которых не указаны выходы.
Процесс завершен.