Розробка типових розширень
Вступ
-
Під час розробки бізнес-процесів виникають ситуації коли потрібно використовувати однотипні типові задачі, і для того щоб прискорити цей процес можна використовувати елементи типових розширень, які досить один раз створити і просто застосовувати в подальшому.
-
Шаблони елементів типових розширень визначають користувацькі вхідні параметри, користувацьку перевірку та технічне відображення введених даних.
-
Після вибору на панелі властивостей вони пропонуються користувачеві як
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: