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 удаляет все группы и элементы, созданные разработчиком, и возвращает набор элементов в исходное состояние.