Ця документація була автоматично перекладена штучним інтелектом.
Усі зміни даних, які вносять користувачі в системі, зазвичай виконуються за допомогою певної дії, як правило, натисканням кнопки. Ця кнопка може бути кнопкою "Надіслати" у формі або кнопкою дії в блоці даних. Подія після операції використовується для прив'язки відповідних робочих процесів до дій цих кнопок, щоб після успішного завершення дії користувача запускався певний процес.
Наприклад, під час додавання або оновлення даних ви можете налаштувати опцію "Прив'язати робочий процес" для кнопки. Після завершення дії буде запущено прив'язаний робочий процес.
На рівні реалізації, оскільки обробка подій після операції відбувається на рівні проміжного програмного забезпечення (middleware Koa), виклики HTTP API до NocoBase також можуть запускати визначені події після операції.
Це вбудований плагін, встановлення не потрібне.
Під час створення робочого процесу виберіть тип "Подія після операції":

Для подій після операції під час створення ви також можете вибрати режим виконання: "Синхронний" або "Асинхронний":

Якщо робочий процес потрібно виконати та повернути негайно після дії користувача, ви можете використовувати синхронний режим; інакше за замовчуванням буде асинхронний режим. В асинхронному режимі дія завершується відразу після запуску робочого процесу, а сам робочий процес виконуватиметься послідовно у фоновій черзі програми.
Перейдіть на полотно робочого процесу, натисніть на тригер, щоб відкрити спливаюче вікно конфігурації, і спочатку виберіть колекцію для прив'язки:

Потім виберіть режим запуску, який може бути локальним або глобальним:

Де:
У локальному режимі наразі підтримуються такі кнопки дії для прив'язки:
Якщо ви вибрали глобальний режим, вам також потрібно вибрати тип операції. Наразі підтримуються "Операція створення даних" та "Операція оновлення даних". Обидві операції запускають робочий процес після успішного завершення операції.
Якщо вам потрібно використовувати пов'язані дані, що запускають дані, у подальших процесах, ви можете вибрати поля зв'язків для попереднього завантаження:

Після запуску ви можете безпосередньо використовувати ці пов'язані дані в процесі.
Для операцій у локальному режимі запуску, після завершення налаштування робочого процесу, вам потрібно повернутися до користувацького інтерфейсу та прив'язати робочий процес до кнопки дії форми відповідного блоку даних.
Робочі процеси, налаштовані для кнопки "Надіслати" (включно з кнопкою "Зберегти дані"), будуть запущені після того, як користувач надішле відповідну форму та завершить операцію з даними.

Виберіть "Прив'язати робочий процес" у меню конфігурації кнопки, щоб відкрити спливаюче вікно налаштування прив'язки. У ньому ви можете налаштувати будь-яку кількість робочих процесів для запуску. Якщо жоден не налаштований, це означає, що запуск не потрібен. Для кожного робочого процесу вам спочатку потрібно вказати, чи є дані, що запускають, даними всієї форми, чи даними певного поля зв'язку у формі. Потім, на основі колекції, що відповідає вибраній моделі даних, виберіть робочий процес форми, який був налаштований для відповідності цій моделі колекції.


Робочий процес має бути увімкнений, перш ніж його можна буде вибрати у вищезгаданому інтерфейсі.
Тут демонструється використання операції створення.
Припустімо сценарій "Заявка на відшкодування витрат". Нам потрібно, щоб після подання працівником заявки на відшкодування витрат, відбувалася автоматична перевірка суми та ручна перевірка для сум, що перевищують ліміт. Лише заявки, які пройшли перевірку, затверджуються, а потім передаються до фінансового відділу для обробки.
Спочатку ми можемо створити колекцію "Відшкодування витрат" з такими полями:
Потім створіть робочий процес типу "Подія після операції" та налаштуйте модель колекції в тригері як колекцію "Відшкодування витрат":

Після встановлення робочого процесу в увімкнений стан, ми повернемося до налаштування конкретних вузлів обробки процесу пізніше.
Потім ми створюємо табличний блок для колекції "Відшкодування витрат" в інтерфейсі, додаємо кнопку "Додати" на панель інструментів та налаштовуємо відповідні поля форми. У параметрах конфігурації кнопки дії "Надіслати" форми відкрийте діалогове вікно "Прив'язати робочий процес", виберіть усі дані форми як контекст, а також робочий процес, який ми створили раніше:

Після завершення налаштування форми поверніться до логічної організації робочого процесу. Наприклад, якщо сума перевищує 500 грн, ми вимагаємо ручної перевірки адміністратором, інакше вона затверджується безпосередньо. Після затвердження створюється запис про відшкодування та далі обробляється фінансовим відділом (опущено).

Ігноруючи подальшу обробку фінансовим відділом, налаштування процесу заявки на відшкодування витрат тепер завершено. Коли працівник заповнює та подає заявку на відшкодування витрат, буде запущено відповідний робочий процес. Якщо сума витрат менше 500, запис буде автоматично створено та очікуватиме подальшої обробки фінансовим відділом. В іншому випадку, її перегляне керівник, і після затвердження запис також буде створено та передано до фінансового відділу.
Процес у цьому прикладі також можна налаштувати на звичайній кнопці "Надіслати". Ви можете вирішити, чи потрібно спочатку створити запис, а потім виконувати подальші процеси, виходячи з конкретного бізнес-сценарію.
Запуск подій після операції не обмежується операціями користувацького інтерфейсу; його також можна запускати за допомогою викликів HTTP API.
Під час запуску події після операції за допомогою виклику HTTP API вам також потрібно звернути увагу на стан увімкнення робочого процесу та на те, чи відповідає конфігурація колекції, інакше виклик може бути невдалим або може виникнути помилка.
Для робочих процесів, локально прив'язаних до кнопки дії, ви можете викликати їх так (на прикладі кнопки створення колекції posts):
Де параметр URL triggerWorkflows — це ключ робочого процесу, кілька робочих процесів розділяються комами. Цей ключ можна отримати, навівши курсор миші на назву робочого процесу у верхній частині полотна робочого процесу:

Після успішного виконання вищезгаданого виклику буде запущено подію після операції відповідної колекції posts.
Оскільки зовнішні виклики також повинні ґрунтуватися на ідентифікації користувача, під час виклику через HTTP API, як і для запитів, що надсилаються зі звичайного інтерфейсу, необхідно надати інформацію для автентифікації, включно з заголовком запиту Authorization або параметром token (токен, отриманий при вході), а також заголовком запиту X-Role (поточне ім'я ролі користувача).
Якщо вам потрібно запустити подію для даних зв'язку "один-до-одного" в цій операції (зв'язок "один-до-багатьох" наразі не підтримується), ви можете використовувати ! у параметрі, щоб вказати дані, що запускають, для поля зв'язку:
Після успішного виконання вищезгаданого виклику буде запущено подію після операції відповідної колекції categories.
Якщо подію налаштовано в глобальному режимі, вам не потрібно використовувати параметр URL triggerWorkflows для вказівки відповідного робочого процесу. Достатньо просто викликати відповідну операцію колекції, щоб її запустити.
Як показано на малюнку нижче:

Події після операції та події колекції схожі тим, що обидва є процесами, які запускаються після зміни даних. Однак їхні рівні реалізації відрізняються: події після операції стосуються рівня API, тоді як події колекції стосуються змін даних у колекції.
Події колекції ближчі до базового рівня системи. У деяких випадках зміна даних, спричинена однією подією, може запустити іншу подію, створюючи ланцюгову реакцію. Особливо, коли дані в деяких пов'язаних колекціях також змінюються під час операції з поточною колекцією, події, пов'язані з пов'язаною колекцією, також можуть бути запущені.
Запуск подій колекції не містить інформації, пов'язаної з користувачем. Навпаки, події після операції ближчі до користувацького інтерфейсу і є результатом дій користувача. Контекст робочого процесу також міститиме інформацію, пов'язану з користувачем, що робить його придатним для обробки процесів, пов'язаних з діями користувача. У майбутньому дизайні NocoBase може бути розширено більше подій після операції, які можна використовувати для запуску, тому більш рекомендовано використовувати події після операції для обробки процесів, де зміни даних викликані діями користувача.
Ще одна відмінність полягає в тому, що події після операції можуть бути локально прив'язані до певних кнопок форми. Якщо є кілька форм, надсилання деяких форм може запускати цю подію, тоді як інші — ні. Події колекції, з іншого боку, стосуються змін даних у всій колекції і не можуть бути локально прив'язані.