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

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

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

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

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

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

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

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

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





Для инициирования из блока данных вы можете выполнить вызов следующим образом (на примере кнопки создания коллекции posts):
Здесь параметр URL triggerWorkflows — это ключ рабочего процесса; несколько ключей рабочих процессов разделяются запятыми. Этот ключ можно получить, наведя курсор мыши на имя рабочего процесса в верхней части холста рабочего процесса:

После успешного вызова будет запущен рабочий процесс согласования для соответствующей коллекции posts.
Поскольку внешние вызовы также должны основываться на идентификации пользователя, при вызове через HTTP API, как и при запросах, отправляемых из обычного интерфейса, необходимо предоставить информацию для аутентификации, включая заголовок запроса Authorization или параметр token (токен, полученный при входе в систему), а также заголовок запроса X-Role (текущее имя роли пользователя).
Если вам нужно запустить событие для данных, связанных по принципу «один к одному» (связь «один ко многим» пока не поддерживается), вы можете использовать ! в параметре, чтобы указать данные для запуска по полю связи:
После успешного вызова будет запущено событие согласования для соответствующей коллекции categories.
При запуске события после действия через HTTP API также необходимо обращать внимание на статус включения рабочего процесса и на то, соответствует ли конфигурация коллекции; в противном случае вызов может не завершиться успешно или может возникнуть ошибка.
Параметры
collectionName: Имя целевой коллекции для инициирования согласования. Обязательный параметр.workflowId: ID рабочего процесса, используемого для инициирования согласования. Обязательный параметр.data: Поля записи коллекции, создаваемой при инициировании согласования. Обязательный параметр.status: Статус записи, создаваемой при инициировании согласования. Обязательный параметр. Возможные значения:
0: Черновик, означает сохранение без отправки на согласование.1: Отправить на согласование, означает, что инициатор отправляет запрос на согласование, который поступает в рабочий процесс согласования.Когда инициированное (или отозванное) согласование находится в статусе черновика, вы можете сохранить или отправить его снова через следующий API:
Инициатор может отозвать запись, находящуюся в процессе согласования, через следующий API:
Параметры
<approval id>: ID записи согласования, которую необходимо отозвать. Обязательный параметр.После того как рабочий процесс согласования переходит в узел согласования, для текущего утверждающего создается задача. Утверждающий может выполнить задачу согласования через интерфейс или с помощью вызова HTTP API.
Задачи — это записи обработки согласования. Вы можете получить все записи обработки согласования текущего пользователя через следующий API:
Здесь approvalRecords является ресурсом коллекции, поэтому вы можете использовать общие условия запроса, такие как filter, sort, pageSize и page.
Параметры
<record id>: ID записи, подлежащей обработке согласования. Обязательный параметр.status: Статус процесса согласования. 2 означает «Одобрить», -1 означает «Отклонить». Обязательный параметр.comment: Комментарий к обработке согласования. Необязательный параметр.data: Изменения записи коллекции в текущем узле согласования после одобрения. Необязательный параметр (действителен только при одобрении).До версии v1.9.0 возврат использовал тот же API, что и «Одобрить» и «Отклонить», при этом "status": 1 означал возврат.
Начиная с версии v1.9.0, для возврата появился отдельный API:
Параметры
<record id>: ID записи, подлежащей обработке согласования. Обязательный параметр.returnToNodeKey: Ключ целевого узла для возврата. Необязательный параметр. Если в узле настроен диапазон узлов, к которым можно вернуться, этот параметр можно использовать для указания, к какому узлу вернуться. Если не настроено, этот параметр не требуется передавать, и по умолчанию будет выполнен возврат к начальной точке для повторной отправки инициатором.Параметры
<record id>: ID записи, подлежащей обработке согласования. Обязательный параметр.assignee: ID пользователя, которому делегируется задача. Обязательный параметр.Параметры
<record id>: ID записи, подлежащей обработке согласования. Обязательный параметр.assignees: Список ID пользователей для добавления в качестве подписантов. Обязательный параметр.order: Порядок добавленного подписанта. -1 означает «до меня», 1 означает «после меня».