4.12. Создание элементов для дизайнера модели
Подсистема BPM позволяет создавать собственные элементы для дизайнера моделей процесса. Новый элемент – это по сути ServiceTask
, избавляющий разработчика модели от необходимости вводить длинные выражения для вызова метода, такие как ${app_MyBean.someMethod(argument1, 'argument2')}
. Ниже приведен пример создания элемента.
Предположим, в системе имеется бин среднего слоя с именем app_DiscountManager
. В бине имеется метод makeDiscount(BigDecimal discountPercent, UUID entityId)
. Метод обновляет стоимость договора, вычитая из нее указанную скидку.
В этом примере мы создадим пользовательский элемент, который будет вызывать указанный выше метод, а процент скидки будет задаваться в редакторе модели как параметр элемента.
Откройте редактор элементов с помощью пункта меню BPM > Model Elements Editor.
Нажмите на кнопку Add group. Введите имя группы – Discounts.
Выделите созданную группу Discounts и нажмите кнопку Add element.
Введите следующие значения в поля редактирования свойств элемента:
-
Title: Contract discount
-
Stencil ID: contractDiscount
-
Icon: нажмите на кнопку Upload и выберите файл со значком (опционально)
-
Bean name: выберите app_DiscountManager
-
Method name: выберите makeDiscount
Warning
|
Выпадающий список Bean name содержит только бины, реализующие какой-либо интерфейс. В списке Method name отображаются методы реализуемых интерфейсов. |
В таблице Method arguments отображаются аргументы метода. Вы можете изменить заголовок и значение по умолчанию для каждого из аргументов.
Сохраните набор элементов, нажав на кнопку Save.
Откройте редактор модели (BPM > Process Models). В списке элементов появилась группа Discounts и элемент Contract discount. Перетащите новый элемент на экран и выделите его. Вы увидите, что в панели свойств появились поля для ввода значений процента скидки и имени процессной переменной с идентификатором сущности.
Tip
|
|
При развёртывании процесса пользовательский элемент будет преобразован в serviceTask
:
<serviceTask id="sid-5C184F22-6071-45CD-AEA9-1792512BBDCE" name="Make discount" activiti:expression="${app_DiscountManager.makeDiscount(10,entityId)}"></serviceTask>
Набор элементов модели может быть экспортирован в ZIP-архив и, соответственно, восстановлен из архива. Это полезно при разработке, когда элементы создаются на машине разработчика, а затем импортируются на продакшн-сервер. Импорт и экспорт осуществляются с помощью соответствующих кнопок в редакторе элементов модели.
Нажатие на кнопку Reset удаляет все группы и элементы, созданные разработчиком, и возвращает набор элементов в исходное состояние.