logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo
Робочий процес
Огляд
Швидкий старт

Тригер

Огляд
Події таблиці даних
Завдання за розкладом
Подія перед дією
Подія після дії
Користувацька подія дії
Затвердження
Webhook

Вузол

Огляд

Штучний інтелект (AI)

Велика мовна модель (LLM)

Керування потоком

Умова
Розгалуження за умовами
Цикл
Змінна
Паралельне розгалуження
Виклик робочого процесу
Вивід потоку
Мапінг змінних JSON
Затримка
Завершення

Обчислення

Обчислення
Обчислення дати
Обчислення JSON

Операції з даними

Додавання даних
Оновлення даних
Запит даних
Видалення даних
Операції SQL

Ручна обробка

Ручна обробка
Затвердження
Копія (CC)

Розширені типи

HTTP-запит
Скрипт JavaScript
Сповіщення
Надсилання email
Відповідь
Повідомлення-відповідь
Змінна
Журнал виконання
Керування версіями
Розширені налаштування

Розробка розширень

Огляд
Розширення типів тригерів
Розширення типів вузлів
Довідник API
Previous PageПодія перед дією
Next PageКористувацька подія дії
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Подія після операції

This feature is provided by the plugin «Робочий процес: Подія після дії»

#Вступ

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

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

На рівні реалізації, оскільки обробка подій після операції відбувається на рівні проміжного програмного забезпечення (middleware Koa), виклики HTTP API до NocoBase також можуть запускати визначені події після операції.

#Встановлення

Це вбудований плагін, встановлення не потрібне.

#Налаштування тригера

#Створення робочого процесу

Під час створення робочого процесу виберіть тип "Подія після операції":

Create Workflow_Post-Action Event Trigger

#Режим виконання

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

Create Workflow_Select Synchronous or Asynchronous

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

#Налаштування колекції

Перейдіть на полотно робочого процесу, натисніть на тригер, щоб відкрити спливаюче вікно конфігурації, і спочатку виберіть колекцію для прив'язки:

Workflow Configuration_Select Collection

#Вибір режиму запуску

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

Workflow Configuration_Select Trigger Mode

Де:

  • Локальний режим запускається лише на кнопках дії, до яких прив'язано цей робочий процес. Натискання кнопок без прив'язаного робочого процесу не запустить його. Ви можете вирішити, чи прив'язувати цей робочий процес, виходячи з того, чи повинні форми з різними цілями запускати один і той же процес.
  • Глобальний режим запускається на всіх налаштованих кнопках дії колекції, незалежно від того, з якої форми вони походять, і немає потреби прив'язувати відповідний робочий процес.

У локальному режимі наразі підтримуються такі кнопки дії для прив'язки:

  • Кнопки "Надіслати" та "Зберегти" у формі додавання.
  • Кнопки "Надіслати" та "Зберегти" у формі оновлення.
  • Кнопка "Оновити дані" в рядках даних (таблиця, список, канбан тощо).

#Вибір типу операції

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

#Вибір попередньо завантажених пов'язаних даних

Якщо вам потрібно використовувати пов'язані дані, що запускають дані, у подальших процесах, ви можете вибрати поля зв'язків для попереднього завантаження:

Workflow Configuration_Preload Association

Після запуску ви можете безпосередньо використовувати ці пов'язані дані в процесі.

#Налаштування операції

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

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

Post-Action Event_Submit Button

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

Post-Action Event_Bind Workflow Configuration_Context Selection

Post-Action Event_Bind Workflow Configuration_Workflow Selection

Примітка

Робочий процес має бути увімкнений, перш ніж його можна буде вибрати у вищезгаданому інтерфейсі.

#Приклад

Тут демонструється використання операції створення.

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

Спочатку ми можемо створити колекцію "Відшкодування витрат" з такими полями:

  • Назва проєкту: Однорядковий текст
  • Заявник: Багато-до-одного (Користувач)
  • Сума: Число
  • Статус: Одиночний вибір ("Затверджено", "Опрацьовано")

Потім створіть робочий процес типу "Подія після операції" та налаштуйте модель колекції в тригері як колекцію "Відшкодування витрат":

Example_Trigger Configuration_Select Collection

Після встановлення робочого процесу в увімкнений стан, ми повернемося до налаштування конкретних вузлів обробки процесу пізніше.

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

Example_Form Button Configuration_Bind Workflow

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

Example_Processing Flow

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

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

#Зовнішній виклик

Запуск подій після операції не обмежується операціями користувацького інтерфейсу; його також можна запускати за допомогою викликів HTTP API.

Примітка

Під час запуску події після операції за допомогою виклику HTTP API вам також потрібно звернути увагу на стан увімкнення робочого процесу та на те, чи відповідає конфігурація колекції, інакше виклик може бути невдалим або може виникнути помилка.

Для робочих процесів, локально прив'язаних до кнопки дії, ви можете викликати їх так (на прикладі кнопки створення колекції posts):

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Hello, world!",
    "content": "This is a test post."
  }'
  "http://localhost:3000/api/posts:create?triggerWorkflows=workflowKey"

Де параметр URL triggerWorkflows — це ключ робочого процесу, кілька робочих процесів розділяються комами. Цей ключ можна отримати, навівши курсор миші на назву робочого процесу у верхній частині полотна робочого процесу:

Workflow_Key_View Method

Після успішного виконання вищезгаданого виклику буде запущено подію після операції відповідної колекції posts.

Примітка

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

Якщо вам потрібно запустити подію для даних зв'язку "один-до-одного" в цій операції (зв'язок "один-до-багатьох" наразі не підтримується), ви можете використовувати ! у параметрі, щоб вказати дані, що запускають, для поля зв'язку:

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Hello, world!",
    "content": "This is a test post.",
    "category": {
      "title": "Test category"
    }
  }'
  "http://localhost:3000/api/posts:create?triggerWorkflows=workflowKey!category"

Після успішного виконання вищезгаданого виклику буде запущено подію після операції відповідної колекції categories.

Примітка

Якщо подію налаштовано в глобальному режимі, вам не потрібно використовувати параметр URL triggerWorkflows для вказівки відповідного робочого процесу. Достатньо просто викликати відповідну операцію колекції, щоб її запустити.

#Поширені запитання

#Відмінність від події перед операцією

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

Як показано на малюнку нижче:

Action Execution Order

#Відмінність від події колекції

Події після операції та події колекції схожі тим, що обидва є процесами, які запускаються після зміни даних. Однак їхні рівні реалізації відрізняються: події після операції стосуються рівня API, тоді як події колекції стосуються змін даних у колекції.

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

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

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