Розробка типових розширень
Вступ
- 
Під час розробки бізнес-процесів виникають ситуації коли потрібно використовувати однотипні типові задачі, і для того щоб прискорити цей процес можна використовувати елементи типових розширень, які досить один раз створити і просто застосовувати в подальшому. 
- 
Шаблони елементів типових розширень визначають користувацькі вхідні параметри, користувацьку перевірку та технічне відображення введених даних. 
- 
Після вибору на панелі властивостей вони пропонуються користувачеві як Custom Fields.
- 
Ці поля можуть бути випадаючими списками, прапорцями, областями введення та текстовими. 
- 
Розглянемо на прикладі бізнес-процесу у якому потрібно досить часто використовувати однотипні задачі, а саме - відправляти повідомлення на електронну пошту за допомогою реалізаціі Java Delegate яку ми будемо використовувати при створенні сервісної задачі. 
- 
Нижче наведені два приклади створення сервісної задачі з використання шаблону і без: 
Створення задачі без використання типових розширень
- 
При створенні задачі без використання шаблону розробнику кожного разу потрібно буде виконувати одні і ті самі дії для створення однотипних задач, а саме розглянемо на прикладі: 
- 
Такий сценарій сповільнює розробку бізнес-процеса, а також може призвести до виникнення помилок, наприклад - друкарська помилка в якомусь із символів або неправильно налаштований елемент. 
- 
У свою чергу шаблон досить один раз налаштувати і просто застосовувати в подальшому. 
- 
Нижче приведено приклад створення такого шаблону. 
Створення елемента розширення
- 
Файли повинні бути у JSON-форматі
{
   "name":"Template",
   "id":"sometemplate",
   "description":"some description",
   "version":1,
   "appliesTo":[
      "bpmn:ServiceTask"
   ],
   "properties":[
      {
         "label":"Implementation Type",
         "type":"String",
         "value":"com.example.MailTaskImpl",
         "editable":false,
         "binding":{
            "type":"property",
            "name":"camunda:class"
         }
      },
      {
         "label":"Sender",
         "type":"String",
         "binding":{
            "type":"camunda:inputParameter",
            "name":"sender"
         },
         "constraints":{
            "notEmpty":true
         }
      },
      {
         "label":"Receivers",
         "type":"String",
         "binding":{
            "type":"camunda:inputParameter",
            "name":"receivers"
         },
         "constraints":{
            "notEmpty":true
         }
      }
   ]
}- 
name : String:- Назва шаблону, який з’явиться в каталозі.
- 
id : String- Ідентифікатор шаблону.
- 
description : String- Необов’язковий опис шаблону. Відображатиметься в модальному вікні вибору шаблону елемента і на панелі властивостей (після застосування шаблону елемента).
- 
version : Integer- Необов’язкова версія шаблону. Якщо ви додасте версію в шаблон, вона буде вважатися унікальною в залежності від її ідентифікатора і версії. Два шаблону можуть мати однаковий ідентифікатор, якщо їх версії різняться.
- 
appliesTo : Array<String>- Список типів BPMN, до яких можна застосувати шаблон (може будь-яким з bpmn:Task, bpmn:SendTask, bpmn:ReceiveTask, bpmn:UserTask, bpmn:ManualTask, bpmn:BusinessRuleTask, bpmn:ServiceTask, bpmn:ScriptTask, bpmn:CallActivity, bpmn:SubProcess, bpmn:Activity, bpmn:Event, bpmn:Gateway, bpmn:SequenceFlow, bpmn:Process, etc.).
- 
properties : Array<Object>- Список властивостей шаблону.
- 
Опис властивостей шаблону: - 
label- Описовий текст, який відображається разом з властивістю
- 
type- Необов’язкове значення, визначення зовнішнього вигляду на панелі властивостей (може бути будь-яким з String, Text, Boolean, Dropdown або Hidden). Якщо не вказано, то в звдачі з’являється можливість вибору типу з переліку: String or Expression, Script, List, Map.
- 
value- Необов’язкове значення за замовчуванням, яке буде використовуватися, якщо пов’язується властивість яка ще не встановлена.
- 
editable- Необов’язкове значення, яке відповідає за можливість редагування властивості.
- 
binding- Вказівка способу зіставлення властивості з елементами і атрибутами розширення BPMN або Camunda (може бути будь-яким з property, camunda: property, camunda:inputParameter, camunda:outputParameter, camunda:in, camunda:out, camunda:executionListener, camunda:field, camunda:errorEventDefinition )
- 
constraints- Список обмежень редагування, застосовуваних до шаблону.- 
Перелік обмежнь, які можна застосувати: - 
notEmpty- Вхідні параметри не повинні бути порожніми
- 
minLength- Мінімальна довжина для вхідних параметрів
- 
maxLength- Максимальна довжина для вхідних параметрів
- 
pattern- Регулярний вираз для зіставлення вхідних даних
 
- 
 
- 
 
- 
- 
Після чого потрібно застосувати новий шаблон 
- 
Як результат - у переліку шаблонів отримаємо нове розширення: 
- 
Після його застосування, сервісна задача матиме наступний вигляд: 
| Більш докладно про створення типових розширень можна ознайомитися тут | 
Застосування елемента розширення
Підготовка до роботи
- 
Встановити Camunda Modeler 
- 
Скопіювати каталог business-process-modeler-extensions.
Сценарій застосування
- 
Визначити тип задачі (сервісна чи користувацька) 
- 
Після чого, натиснути кнопку Open Catalog
- 
В спливаючому вікні потрібно вибрати необхідний шаблон та натиснути кнопку Apply
- 
Останній крок - це заповнити шаблон відповідно до бізнес-логіки процесу 
- 
Щоб видалити застосований шаблон з елемента, можна використовувати функцію Unlink або Remove: