Моделювання та внесення змін до бізнес-процесу

ЗМІСТ
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

Опис механізму моделювання та внесення змін до бізнес-процесу наведений на прикладі бізнес-процесу оновлення довідника хімічних факторів довільних.

Моделювання бізнес-процесів відбувається у застосунку Camunda Modeler. Для розширення функціональності застосунку необхідно встановити плагін BPMN Linter.

1. Передумови

  1. Встановіть застосунок Camunda Modeler та плагін BPMN Linter — зверніться до відповідної інструкції за посиланням.

  2. Встановіть локальний git-клієнт Atlassian SourceTree — зверніться до відповідної інструкції за посиланням.

  3. Встановіть каталог типових розширень business-process-modeler-extensions, що зберігається у захищеному сховищі артефактів Nexus — зверніться до відповідної інструкції за посиланням.

За потреби, зверніться до адміністратора Платформи для надання архіву із каталогом розширень business-process-modeler-extensions останньої версії (тека типу version.build — наприклад, 0.0.1-SNAPSHOT.12)).

2. Моделювання бізнес-процесу

Моделювання бізнес-процесу є послідовною процедурою. Будь ласка, дотримуйтеся кроків, описаних у цьому розділі.

2.1. Створення нової BPMN-діаграми

Відкрийте додаток Camunda Modeler та створіть нову діаграму BPMN, натиснувши кнопку BPMN diagram.

В результаті з`явиться вікно нової діаграми.

bp 1

2.2. Додавання елемента Create pool/Participant

З панелі інструментів, що знаходиться зліва, необхідно перетягнути елемент Create pool/Participant до панелі моделювання.

bp 2

У правому вікні з параметрами необхідно заповнити поля відповідними значеннями:

  • в полі Name введіть значення Створення довідника хімічний довільні;

  • в полі Process id введіть значення update-dict;

  • в полі Process name введіть значення Створення довідника хімічний довільні.

В результаті елемент Create pool/Participant додається та заповнюється необхідними параметрами.

bp 3

2.3. Налаштування початкової події

На початковій події необхідно заповнити поля у вікні параметрів, натиснувши на цю подію:

  • в полі Name введіть значення Початок процесу;

  • в полі Initiator введіть значення initiator.

В результаті початкова подія заповнюється необхідними параметрами.

bp 4

2.4. Створення та налаштування Користувацької задачі (User Task) "Внести запис довідника"

Для того, щоб додати користувацьку задачу Внести запис довідника, необхідно натиснути на початкову подію та обрати Append Task в меню, що з’явиться.

Альтернативно можна перетягнути задачу з палетки до області моделювання діаграми та з’єднати початкову подію із задачею.

Після натискання іконки Create Task (Створити задачу), в зоні моделювання буде додана задача, яку необхідно заповнити відповідними параметрами.

bp 5

  • Вкажіть тип задачі, натиснувши на іконку ключа (Change Type);

  • Далі оберіть User Task (Користувацька задача);

bp 6

  • В зоні параметрів, справа, натисніть Open Catalog (Відкрити каталог), оберіть шаблон User Form (Користувацька форма) та натисніть Apply для підтвердження.

bp 7

  • Заповніть параметри задачі в меню справа:

    • в полі Id введіть значення Activity_update-dict-bp-add-name;

    • в полі Name введіть значення Внести запис довідника;

    • в полі Form key введіть значення update-dict-bp-add-name;

    • в полі Assignee введіть значення ${initiator} (передзаповнюється при обранні шаблону).

В результаті Користувацька задача додається на діаграмі та є налаштованою.

bp 8

2.5. Створення та налаштування Сервісної задачі "Пошук запису довідника"

Додайте наступну сервісну задачу Пошук запису довідника до бізнес-процесу. Для цього натисніть на користувацьку задачу Внести запис довідника та оберіть Append Task в меню.

Вкажіть тип задачі, натиснувши на іконку ключа (Change type) та оберіть з меню пункт Service Task.

Заповніть параметри задачі у вікні параметрів справа:
  • натисніть кнопку Open Catalog (Відкрити каталог), оберіть налаштований шаблон Search for entities in data factory та натисніть Apply для підтвердження;

bp 9

  • далі, у полі name введіть значення Пошук запису довідника;

  • заповніть у випадному меню Resource поле Variable Assignment Value значенням factor-equal-factor-type-name-count;

  • заповніть у випадному меню Search Variables поле Variable Assignment Type значенням Map;

  • додайте змінну у випадному меню Search Variables — для цього натисніть кнопку Add Entry та заповніть наступні параметри:

    • у полі Key введіть name;

    • у полі Value введіть ${submission('Activity_update-dict-bp-add-name').formData.prop('name').value()};

bp 10

  • у випадному меню X-Access-Token, у полі Variable Assignment Value зазначте змінну ${completer('Activity_update-dict-bp-add-name').accessToken};

    Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію completer('<task_id>') для отримання даних користувача, замість initiator().

    Токен доступу береться з АБО ініціатора (наприклад, $initiator().accessToken}), АБО виконавця останньої користувацької задачі (наприклад, ${completer('taskDefinitionId').accessToken}).

    JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.

    Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.

  • у випадному меню Result Variable, в полі Assign to Process Variable додайте змінну response.

bp 11

В результаті Сервісна задача додається на діаграмі та є налаштованою.

2.6. Додавання XOR-шлюзу

Додайте XOR-шлюз Запис довідника присутній?, натиснувши на задачу Пошук запису довідника та оберіть Append Gateway в меню.

Заповніть параметри шлюзу в меню справа:

  • Заповніть поле Name значенням Запис довідника присутній?.

bp 12

2.7. Створення та налаштування сервісної задачі "Формування помилки"

Додайте наступну сервісну задачу Формування помилки, натиснувши на XOR-шлюз Запис довідника присутній? → далі оберіть Append Task в меню.

Вкажіть тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт Service Task.

Заповніть параметри задачі у вікні справа:

  • оберіть шаблон (Template), натиснувши кнопку Open Catalog;

  • у вікні каталогу, що відкриється, оберіть налаштований шаблон Throw validation error;

  • Натисніть Apply для підтвердження;

bp 13

  • Далі, у полі Name введіть значення Формування помилки;

  • заповніть у випадному меню Validation errors поле Variable Assignment Type значенням List;

  • додайте змінну, натиснувши кнопку Add Value, та для параметра Value введіть наступну JSON-структуру:

{"field": "name", "value": "${submission('Activity_update-dict-bp-add-name').formData.prop('name').stringValue().replaceAll("\"", "\\\\\"")}", "message": "Такий запис вже існує"}

bp 13 1

На стрілочці, що з’єднує XOR-шлюз Запис довідника присутній? та сервісну задачу Формування помилки, заповніть параметри у правому меню:

  • у полі Name введіть значення так;

  • у полі Condition Type введіть значення Expression;

  • у полі Expression введіть значення ${!response.value.responseBody.elements().isEmpty()}.

bp 14

В результаті Сервісна задача додається на діаграмі та є налаштованою.

2.8. З’єднання сервісної задачі "Формування помилки" з користувацькою задачею "Внести запис довідника"

  • На панелі меню оберіть елемент Create Gateway і, натиснувши та утримуючи ліву клавішу миші, перетягніть задачу Внести запис довідника до області діаграми поміж початковою подією та користувацькою задачею.

bp 15

  • З’єднайте сервісну задачу Формування помилки з користувацькою задачею Внести запис довідника обравши в меню стрілку.

bp 16

bp 16 1

2.9. Створення та налаштування користувацької задачі "Підписати дані КЕП"

Додайте наступну користувацьку задачу Підписати дані КЕП, натиснувши на XOR-шлюз Запис довідника присутній? та оберіть Append Task у меню.

  • Вкажіть тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт User Task.

  • Заповніть параметри задачі у вікні справа:

    • оберіть шаблон (Template), натиснувши кнопку Open Catalog;

    • у новому вікні оберіть налаштований шаблон Officer Sign Task та натисніть Apply для підтвердження;

    • у полі id введіть значення Activity_update-dict-bp-sign-add-name;

    • у полі Name введіть значення Підписати дані КЕП;

    • у полі Form key введіть значення update-dict-bp-sign-add-name;

    • у полі Assignee введіть значення ${initiator} (передзаповнюється при обранні шаблону).

bp 19

  • У полі Form data pre-population введіть значення ${submission('Activity_update-dict-bp-add-name').formData}.

bp 19 1

На стрілочці, що з’єднує XOR-шлюз Запис довідника присутній? та задачу Підписати дані КЕП, заповніть параметри в меню справа:

  • у полі Name зазначте ні;

  • у полі Condition Type зазначте Expression;

  • у полі Expression вкажіть змінну ${response.value.responseBody.elements().isEmpty()}.

В результаті користувацька задача додається на діаграмі та є налаштованою.

2.10. Створення та налаштування скрипт-задачі "Підписати дані КЕП"

Додайте наступну скрипт-задачу Підготовка даних для запису (transient var), натиснувши на задачу Підписати дані КЕП та оберіть Append Task в меню.

Вкажіть тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт Script Task.

Заповніть параметри задачі відповідними значеннями у вікні справа:

  • у полі Name введіть значення Підготовка даних для запису (transient var);

  • у полі Script Format введіть значення groovy;

  • у полі Script Type оберіть Inline Script;

  • у полі Script введіть необхідний скрипт:

def signedFormData = submission('Activity_update-dict-bp-sign-add-name').formData

        signedFormData.prop('factorType', 'Хімічний: довільні')

        execution.removeVariable('dataPayload')
        execution.setVariableLocalTransient('dataPayload', signedFormData)

bp 20

В результаті скрипт-задача додається на діаграмі та є налаштованою.

2.11. Створення та налаштування операції Call Activity

Додайте наступну задачу Підписати дані системним ключем, натиснувши на задачу Підготовка даних для запису (transient var) та оберіть Append Task в меню.

  • Вказати тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт Call Activity.

  • Заповніть параметри у вікні справа:

    • на вкладці General:

      • у полі Name введіть значення Підписати дані системним ключем;

      • у полі CallActivity Type введіть значення BPMN;

      • у полі Called element введіть значення system-signature-bp;

      • у полі Binding введіть значення Latest;

bp 21

  • на вкладці Variables:

    • у полі In Mapping введіть значення dataToSign :=dataPayload;

    • у полі Out Mapping введіть значення system_signature_ceph_key := system_signature_ceph_key.

bp 22

В результаті Call Activity додано на діаграмі та налаштовано.

2.12. Створення та налаштування сервісної задачі "Зберегти дані до фабрики даних"

Додайте наступну сервісну задачу Зберегти дані до фабрики даних, натиснувши на задачу Підписати дані системним ключем, та оберіть Append Task в меню.

Вкажіть тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт Service Task.

Заповніть наступні параметри у вікні справа:

  • оберіть шаблон (Template), натиснувши кнопку Open Catalog;

  • У вікні обрати налаштований шаблон Create entity in data factory та натисніть Apply для підтвердження;

bp 23

  • у полі Name введіть значення Зберегти дані до фабрики даних;

  • у полі Resource введіть значення factor;

  • у полі Payload введіть значення ${dataPayload};

  • у полі X-Access-Token введіть значення ${completer('Activity_update-dict-bp-sign-add-name').accessToken};

    Після відпрацювання першої користувацької задачі (User Task), намагайтеся використовувати функцію completer('<task_id>') для отримання даних користувача, замість initiator().

    Токен доступу береться з АБО ініціатора (наприклад, $initiator().accessToken}), АБО виконавця останньої користувацької задачі (наприклад, ${completer('taskDefinitionId').accessToken}).

    JWT-токен має свій термін дії, який триває 300 секунд. Якщо вказати токен ініціатора, який запустив бізнес-процес, а користувач довго не виконував задачу, то термін дії токена спливе, й бізнес-процес необхідно буде запускати повторно.

    Детальніше про JUEL-функції ви можете переглянути на сторінці JUEL-функції у бізнес-процесах.

  • у полі X-Digital-Signature source введіть значення ${sign_submission('Activity_update-dict-bp-sign-add- name').signatureDocumentId};

  • у полі X-Digital-Signature-Derived source введіть значення ${system_signature_ceph_key};

  • у полі Result variable введіть значення response.

bp 24

В результаті сервісна задача додається на діаграмі та є налаштованою.

2.13. Створення та налаштування сервісної задачі "Результат виконання "Запис довідника створено"

Додайте наступну сервісну задачу Результат виконання "Запис довідника створено", натиснувши на задачу Зберегти дані до фабрики даних, та оберіть Append Task в меню.

Вкажіть тип задачі, натиснувши на іконку ключа, та оберіть з меню пункт Service Task.

Заповніть параметри задачі у вікні справа:

  • оберіть шаблон (Template), натиснувши кнопку Open Catalog.

  • у новому вікні оберіть налаштований шаблон Define business process status та натисніть Apply для підтвердження;

bp 25

  • у полі Name введіть значення Результат виконання "Запис довідника створено";

  • у полі Status введіть значення Запис довідника створено.

bp 26

В результаті сервісна задача додається на діаграмі та є налаштованою.

2.14. Додавання події EndEvent для завершення бізнес-процесу

Додайте подію, що завершує бізнес-процес, натиснувши на задачу Результат виконання "Запис довідника створено", та оберіть Append EndEvent в меню.

Заповніть наступні параметри задачі у вікні справа:

  • у полі Name введіть значення Запис довідника створено.

В результаті подія, що завершує бізнес-процес, додається на діаграмі та є налаштованою.

bp 27

2.15. Збереження BPMN-діаграми до Gerrit-репозиторію

Для збереження BPMN-діаграми змодельованого бізнес-процесу виконайте наступні кроки:

  • У додатку Camunda Modeler, в меню File оберіть опцію Save File (або затисніть комбінацію клавіш Ctrl+S).

bp 28

  • У вікні, що відкрилося, знайдіть попередньо клонований проєкт registry-regulations та збережіть діаграму до папки /bpmn.

  • Введіть назву діаграми (тут — update-dict.bpmn) та натисніть кнопку Save (Зберегти), як показано на зображенні нижче.

bp 29

В результаті діаграма зберігається до потрібної директорії у форматі .bpmn.

3. Внесення змін до бізнес-процесу

Для внесення змін до наявного бізнес-процесу, виконайте наступні кроки:

  • відкрийте попередньо клонований проєкт у локальному git-клієнті Atlassian SourceTree;

  • на вкладці репозиторію натисніть кнопку Pull (команда git pull) для того, щоб завантажити останні зміни до проєкту;

  • у новому вікні, що відрилося, натисніть кнопку Pull.

bp change 1

  • на панелі інструментів, у правому верхньому куті, натисніть кнопку Explorer;

  • у новому вікні файлового провідника перейдіть до папки /bpmn та оберіть BPMN-файл, що потребує внесення змін (тут — update-dict.bpmn).

  • відкрийте файл у додатку Camunda Modeler.

bp change 2

Наприклад, необхідно внести зміни до кінцевої події (EndEvent) та змінити її назву. Для цього виконайте наступні кроки:

  • у додатку Camunda Modeler оберіть кінцеву подію, виділивши її на панелі моделювання;

  • у полі Name змініть назву події із Запис довідника створено на Запис довідника створено! (тут — додано один символ ! (знак оклику) в кінці назви);

bp change 3

  • збережіть зміни: в меню File оберіть опцію Save File (або затисніть комбінацію клавіш Ctrl+S).

bp change 4

В результаті вносяться зміни до процесу.

Внесення змін до гілки в репозиторії Gerrit

Для внесення змін до відповідної гілки в репозиторії Gerrit, виконайте настанови, описані нижче.

  • відкрийте попередньо клонований проєкт у локальному git-клієнті Atlassian SourceTree.

  • на панелі зліва перейдіть до розділу File Status:

    • у нижньому вікні введіть текстове повідомлення про те, які зміни відбулися, тобто commit message (тут — "MDTUDDM-TEST");

    • у вікні Unstaged files показано файли, до яких внесено зміни. Безпосередньо зміни зображуються у вікні справа, при виборі таких файлів (в нашому випадку — це один файл update-dict.bpmn;

    • натисніть клавішу Stage All.

bp change 5

Таким чином файл update-dict.bpmn переміститься до розділу Staged files, при цьому стане доступною кнопка Commit (команда git commit);

bp change 6

  • на панелі інструментів, розташованій зверху, натисніть кнопку Push;

  • у новому вікні, що відкрилося, у полі master, змініть значення master на refs/for/master та натисніть Push.

bp change 7

Перейдіть на сторінку у віддаленому репозитарії для перегляду вхідних змін MDTUDDM-TEST: https://gerrit-mdtu-ddm-edp-cicd-integration-uat-env.apps.cicd.mdtu-ddm.projects.epam.com/dashboard/self.

bp change 8