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

Триггеры

Обзор
Событие коллекции
Запланированная задача
Событие до действия
Событие после действия
Событие пользовательского действия
Одобрение
Webhook

Узлы

Обзор

Искусственный интеллект

Большая языковая модель

Управление потоком

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

Вычисления

Вычисление
Вычисление даты
Вычисление JSON

Операции с данными

Создание данных
Обновление данных
Запрос данных
Удаление данных
Операция SQL

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

Ручная обработка
Одобрение
Копия (CC)

Расширенные типы

HTTP-запрос
JavaScript-скрипт
Уведомление
Отправка почты
Ответ
Сообщение ответа
Переменные
История выполнения
Управление версиями
Расширенные параметры

Разработка расширений

Обзор
Расширение типов триггеров
Расширение типов узлов
Справочник API
Previous PageСобытие пользовательского действия
Next PageWebhook
Уведомление об ИИ-переводе

Этот документ был переведён с помощью ИИ. Для получения точной информации обратитесь к английской версии.

#Согласование

Рабочий процесс: ОдобрениеProfessional Edition+

#Введение

Согласование — это тип процесса, специально разработанный для задач, инициируемых и обрабатываемых вручную, для принятия решения о статусе соответствующих данных. Обычно он используется для автоматизации офисных процессов или другого управления процессами принятия решений вручную, например, для создания и управления ручными процессами в таких сценариях, как «заявка на отпуск», «согласование возмещения расходов» и «согласование закупки сырья».

Плагин согласования предоставляет специализированный тип рабочего процесса (триггер) «Согласование (событие)» и специализированный для этого процесса узел «Согласование». В сочетании с уникальными пользовательскими коллекциями и пользовательскими блоками NocoBase вы можете быстро и гибко создавать и управлять различными сценариями согласования.

#Создание рабочего процесса

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

Триггер согласования_Создание рабочего процесса согласования

Затем в интерфейсе настройки рабочего процесса нажмите на триггер, чтобы открыть диалоговое окно для дальнейшей настройки.

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

20251226102619

#Привязка коллекции

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

Триггер согласования_Настройка триггера_Выбор коллекции

#Способ запуска

При инициировании согласования для бизнес-данных вы можете выбрать один из двух следующих способов запуска:

  • Перед сохранением данных

    Инициирование согласования до сохранения отправленных данных. Подходит для сценариев, когда данные должны сохраняться только после получения одобрения. В этом режиме данные на момент инициирования являются временными и будут официально сохранены в соответствующую коллекцию только после одобрения.

  • После сохранения данных

    Инициирование согласования после сохранения отправленных данных. Подходит для сценариев, когда данные можно сначала сохранить, а затем согласовать. В этом режиме данные уже сохранены в коллекции на момент начала согласования, и любые изменения, внесенные в процессе согласования, также будут сохранены.

#Место инициирования согласования

Вы можете выбрать, где в системе можно инициировать согласование:

  • Только в блоках данных

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

  • В блоках данных и в Центре задач

    Помимо блоков данных, согласования также можно инициировать и обрабатывать в глобальном Центре задач. Обычно это подходит для административных данных.

#Кто может инициировать согласование

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

  • Все пользователи

    Все пользователи в системе могут инициировать это согласование.

  • Только выбранные пользователи

    Разрешить инициирование согласования только пользователям из указанного диапазона. Поддерживается множественный выбор.

    20251226114623

#Настройка интерфейса формы инициатора

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

Триггер согласования_Настройка триггера_Форма инициатора

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

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

Триггер согласования_Настройка триггера_Форма инициатора_Настройка полей

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

Триггер согласования_Настройка триггера_Форма инициатора_Настройка действий_Сохранить

Если рабочий процесс согласования позволяет инициатору отозвать заявку, вам необходимо включить кнопку «Отзыв» в конфигурации интерфейса инициатора:

Триггер согласования_Настройка триггера_Разрешить отзыв

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

Подсказка

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

#Карточка «Мои заявки» 2.0+

Используется для настройки карточек задач в списке «Мои заявки» Центра задач.

20260213005957

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

После создания запроса на согласование в списке Центра задач будет видна настроенная карточка задачи:

20260213010228

#Режим отображения записей в процессе

  • Снимок

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

  • Последняя версия

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

#Узел согласования

В рабочем процессе согласования необходимо использовать специализированный узел «Согласование» для настройки логики операций утверждающих по обработке (одобрению, отклонению или возврату) инициированного согласования. Узел «Согласование» может использоваться только в рабочих процессах согласования. Подробности см. в разделе Узел согласования.

Подсказка

Если в рабочем процессе согласования нет ни одного узла «Согласование», этот процесс будет одобрен автоматически.

#Настройка инициирования согласования

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

Инициировать согласование_Привязать рабочий процесс

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

Подсказка

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

#Центр задач

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

20250310161203

#Мои отправления

#Просмотр инициированных согласований

20250310161609

#Непосредственное инициирование нового согласования

20250310161658

#Мои задачи

#Список задач

20250310161934

#Детали задачи

20250310162111

#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.

Подсказка

Поскольку внешние вызовы также должны основываться на личности пользователя, при вызове через 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.

Подсказка

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

#Инициирование из Центра согласования

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "collectionName": "<collection name>",
    "workflowId": <workflow id>,
    "data": { "<field>": "<value>" },
    "status": <initial approval status>,
  }'
  "http://localhost:3000/api/approvals:create"

Параметры

  • collectionName: Имя целевой коллекции для инициирования согласования, обязательно.
  • workflowId: ID рабочего процесса, используемого для инициирования согласования, обязательно.
  • data: Поля записи коллекции, создаваемой при инициировании согласования, обязательно.
  • status: Статус создаваемой записи при инициировании согласования, обязательно. Возможные значения:
    • 0: Черновик, означает сохранение без отправки на согласование.
    • 2: Отправить на согласование, означает, что инициатор отправляет заявку на согласование и входит в процесс согласования.

#Сохранение и отправка

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

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "data": { "<field>": "<value>" },
    "status": 2
  }'
  "http://localhost:3000/api/approvals:update/<approval id>"

#Получение списка инициированных согласований

curl -X GET -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/approvals:listMine"

#Отзыв

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

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  "http://localhost:3000/api/approvals:withdraw/<approval id>"

Параметры

  • <approval id>: ID записи согласования для отзыва, обязательно.

#Утверждающий

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

#Получение записей обработки согласования

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

curl -X GET -H 'Authorization: Bearer <your token>' \
  "http://localhost:3000/api/approvalRecords:listMine"

Здесь approvalRecords выступает как ресурс коллекции, поэтому вы также можете использовать общие условия запроса, такие как filter, sort, pageSize и page.

#Получение одной записи обработки согласования

curl -X GET -H 'Authorization: Bearer <your token>' \
  "http://localhost:3000/api/approvalRecords:get/<record id>"

#Одобрение и отклонение

curl -X POST -H 'Authorization: Bearer <your token>' -d \
  '{
    "status": 2,
    "comment": "Looks good to me.",
    "data": { "<field to modify>": "<value>" }
  }'
  "http://localhost:3000/api/approvalRecords:submit/<record id>"

Параметры

  • <record id>: ID записи для обработки согласования, обязательно.
  • status: Поле статуса обработки согласования, 2 означает «Одобрить», -1 означает «Отклонить», обязательно.
  • comment: Примечание к обработке согласования, необязательно.
  • data: Изменения записи коллекции в текущем узле согласования после одобрения, необязательно (действует только при одобрении).

#Возврат v1.9.0+

До версии v1.9.0 возврат использовал тот же интерфейс, что и «Одобрить» и «Отклонить», с использованием "status": 1 для обозначения возврата.

Начиная с версии v1.9.0, для возврата появился отдельный интерфейс:

curl -X POST -H 'Authorization: Bearer <your token>' -d \
  '{
    "returnToNodeKey": "<node key>",
  }'
  "http://localhost:3000/api/approvalRecords:return/<record id>"

Параметры

  • <record id>: ID записи для обработки согласования, обязательно.
  • returnToNodeKey: Ключ целевого узла для возврата, необязательно. Если в узле настроен диапазон узлов для возврата, этот параметр можно использовать для указания узла, к которому нужно вернуться. Если не настроено, значение передавать не нужно, по умолчанию будет выполнен возврат в начальную точку для повторной отправки инициатором.

#Делегирование

curl -X POST -H 'Authorization: Bearer <your token>' -d \
  '{
    "assignee": <user id>,
  }'
  "http://localhost:3000/api/approvalRecords:delegate/<record id>"

Параметры

  • <record id>: ID записи для обработки согласования, обязательно.
  • assignee: ID пользователя для делегирования, обязательно.

#Добавление подписанта

curl -X POST -H 'Authorization: Bearer <your token>' -d \
  '{
    "assignees": [<user id>],
    "order": <order>,
  }'
  "http://localhost:3000/api/approvalRecords:add/<record id>"

Параметры

  • <record id>: ID записи для обработки согласования, обязательно.
  • assignees: Список ID пользователей для добавления в качестве подписантов, обязательно.
  • order: Порядок добавления подписанта, -1 означает «до меня», 1 означает «после меня».