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 commercial plugin «Рабочий процесс: Событие перед действием», please purchase to use

#Введение

Плагин "Событие до выполнения действия" предоставляет механизм перехвата операций, который может быть запущен после отправки запроса на создание, обновление или удаление записи, но до его обработки.

Если в запущенном рабочем процессе выполняется узел "Завершить рабочий процесс" или любой другой узел завершается с ошибкой (из-за сбоя или незавершённости), действие формы будет перехвачено. В противном случае запланированная операция будет выполнена в обычном режиме.

Использование этого плагина в сочетании с узлом "Сообщение ответа" позволяет настроить ответное сообщение, которое будет возвращено клиенту, предоставляя соответствующие подсказки. События "До выполнения действия" можно использовать для бизнес-валидации или логических проверок, чтобы разрешить или перехватить запросы клиента на создание, обновление и удаление данных.

#Настройка триггера

#Создание триггера

При создании рабочего процесса выберите тип "Событие до выполнения действия":

Создать событие до выполнения действия

#Выбор коллекции

В триггере рабочего процесса перехвата первым делом необходимо настроить коллекцию, соответствующую действию:

Настройка события перехвата_Коллекция

Затем выберите режим перехвата. Вы можете перехватывать только кнопки действий, привязанные к этому рабочему процессу, или перехватывать все выбранные действия для этой коллекции (независимо от того, из какой формы они исходят, и без необходимости привязки к соответствующему рабочему процессу):

#Режим перехвата

Настройка события перехвата_Режим перехвата

В настоящее время поддерживаются следующие типы действий: "Создать", "Обновить" и "Удалить". Можно выбрать несколько типов действий одновременно.

#Настройка действия

Если в настройках триггера выбран режим "Перехватывать только при отправке формы, привязанной к этому рабочему процессу", вам также необходимо вернуться к интерфейсу формы и привязать этот рабочий процесс к соответствующей кнопке действия:

Добавить заказ_Привязать рабочий процесс

В настройках привязки рабочего процесса выберите соответствующий рабочий процесс. Обычно для контекста запуска данных достаточно выбрать значение по умолчанию "Все данные формы":

Выбрать рабочий процесс для привязки

Примечание

Кнопки, которые можно привязать к событию "До выполнения действия", в настоящее время поддерживают только кнопки "Отправить" (или "Сохранить"), "Обновить данные" и "Удалить" в формах создания или обновления. Кнопка "Запустить рабочий процесс" не поддерживается (ее можно привязать только к "Событию после выполнения действия").

#Условия для перехвата

В "Событии до выполнения действия" существуют два условия, которые приведут к перехвату соответствующей операции:

  1. Рабочий процесс доходит до любого узла "Завершить рабочий процесс". Как и в предыдущих инструкциях, если данные, запустившие рабочий процесс, не соответствуют предустановленным условиям в узле "Условие", процесс перейдет в ветку "Нет" и выполнит узел "Завершить рабочий процесс". В этот момент рабочий процесс завершится, и запрошенное действие будет перехвачено.
  2. Любой узел в рабочем процессе завершается с ошибкой, включая ошибки выполнения узла или другие исключительные ситуации. В этом случае рабочий процесс завершится с соответствующим статусом, и запрошенное действие также будет перехвачено. Например, если рабочий процесс вызывает внешние данные через "HTTP-запрос" и запрос завершается неудачей, рабочий процесс завершится со статусом "сбой", и соответствующий запрос на действие также будет перехвачен.

После выполнения условий перехвата соответствующее действие больше не будет выполняться. Например, если отправка заказа перехвачена, соответствующие данные заказа не будут созданы.

#Параметры, связанные с соответствующим действием

В рабочем процессе типа "Событие до выполнения действия" для различных операций в триггере доступны различные данные, которые можно использовать в качестве переменных в процессе:

Тип действия \ Переменная"Оператор""Идентификатор роли оператора"Параметр действия: "ID"Параметр действия: "Отправленный объект данных"
Создать запись✓✓-✓
Обновить запись✓✓✓✓
Удалить одну или несколько записей✓✓✓-
Примечание

Переменная "Данные триггера / Параметры действия / Отправленный объект данных" в событии "До выполнения действия" не является фактическими данными из базы данных, а представляет собой только параметры, отправленные с действием. Если вам нужны фактические данные из базы данных, вы должны запросить их с помощью узла "Запрос данных" в рабочем процессе.

Кроме того, для операции удаления, когда речь идет об одной записи, "ID" в параметрах действия является простым значением, а когда речь идет о нескольких записях, "ID" в параметрах действия является массивом.

#Вывод ответного сообщения

После настройки триггера вы можете настроить соответствующую логику принятия решений в рабочем процессе. Обычно используется режим ветвления узла "Условие", чтобы на основе результатов конкретных бизнес-условий решить, "Завершить рабочий процесс" или нет, и вернуть предустановленное "Сообщение ответа":

Настройка рабочего процесса перехвата

На этом настройка соответствующего рабочего процесса завершена. Теперь вы можете попробовать отправить данные, которые не соответствуют условиям, настроенным в узле "Условие" рабочего процесса, чтобы запустить логику перехвата. После этого вы увидите возвращенное ответное сообщение:

Сообщение об ошибке

#Статус ответного сообщения

Если узел "Завершить рабочий процесс" настроен на выход со статусом "Успешно", и этот узел выполняется, запрос на действие все равно будет перехвачен, но возвращенное ответное сообщение будет отображаться со статусом "Успешно" (а не "Ошибка"):

Сообщение об успешном выполнении

#Пример

Объединив приведенные выше основные инструкции, рассмотрим сценарий "Отправка заказа" в качестве примера. Предположим, нам необходимо проверять наличие всех продуктов, выбранных пользователем при отправке заказа. Если запасы любого выбранного продукта недостаточны, отправка заказа перехватывается, и возвращается соответствующее сообщение. Рабочий процесс будет циклически проверять каждый продукт до тех пор, пока запасы всех продуктов не станут достаточными, после чего он продолжит выполнение и создаст данные заказа для пользователя.

Остальные шаги аналогичны описанным в инструкциях. Однако, поскольку заказ включает в себя несколько товаров, помимо добавления отношения "многие ко многим" "Заказ" <-- M:1 -- "Позиция заказа" -- 1:M --> "Продукт" при моделировании данных, вам также необходимо добавить узел "Цикл" в рабочий процесс "Событие до выполнения действия", чтобы итеративно проверять, достаточно ли запасов каждого продукта:

Пример_Рабочий процесс циклической проверки

В качестве объекта для цикла выбирается массив "Позиции заказа" из отправленных данных заказа:

Пример_Настройка объекта цикла

Узел условия в циклическом процессе используется для определения, достаточно ли запасов текущего объекта продукта в цикле:

Пример_Условие в цикле

Остальные настройки аналогичны базовому использованию. При окончательной отправке заказа, если у какого-либо продукта недостаточно запасов, отправка заказа будет перехвачена, и будет возвращено соответствующее сообщение. Во время тестирования попробуйте отправить заказ с несколькими продуктами, где у одного продукта недостаточно запасов, а у другого достаточно. Вы увидите возвращенное ответное сообщение:

Пример_Сообщение ответа после отправки

Как видите, в ответном сообщении не указано, что первого продукта "iPhone 15 pro" нет в наличии, а только то, что второго продукта "iPhone 14 pro" недостаточно. Это связано с тем, что в цикле первого продукта было достаточно, поэтому он не был перехвачен, а второго продукта было недостаточно, что привело к перехвату отправки заказа.

#Внешний вызов

Само событие "До выполнения действия" внедряется на этапе обработки запроса, поэтому оно также поддерживает запуск через вызовы 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 — это ключ рабочего процесса; несколько ключей рабочих процессов разделяются запятыми. Этот ключ можно получить, наведя курсор мыши на имя рабочего процесса в верхней части холста рабочего процесса:

Рабочий процесс_Ключ_Способ просмотра

После выполнения вышеуказанного вызова будет запущено событие "До выполнения действия" для соответствующей коллекции posts. После синхронной обработки соответствующего рабочего процесса данные будут созданы и возвращены в обычном режиме.

Если настроенный рабочий процесс достигает "Конечного узла", логика будет такой же, как и при работе с интерфейсом: запрос будет перехвачен, и данные не будут созданы. Если статус конечного узла настроен как "сбой", возвращаемый код состояния ответа будет 400; если "успешно", то 200.

Если перед конечным узлом также настроен узел "Сообщение ответа", сгенерированное сообщение также будет возвращено в результате ответа. Структура для ошибки выглядит следующим образом:

{
  "errors": [
    {
      "message": "message from 'Response message' node"
    }
  ]
}

Структура сообщения, когда "Конечный узел" настроен на успешное выполнение:

{
  "messages": [
    {
      "message": "message from 'Response message' node"
    }
  ]
}
Примечание

Поскольку в рабочий процесс можно добавить несколько узлов "Сообщение ответа", структура данных возвращаемого сообщения представляет собой массив.

Если событие "До выполнения действия" настроено в глобальном режиме, при вызове HTTP API вам не нужно использовать параметр URL triggerWorkflows для указания соответствующего рабочего процесса. Достаточно просто вызвать соответствующее действие коллекции, чтобы запустить его.

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"
Примечание

При запуске события "До выполнения действия" через вызов HTTP API также необходимо обращать внимание на статус включения рабочего процесса и на соответствие конфигурации коллекции, иначе вызов может не завершиться успешно или привести к ошибке.