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

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

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

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

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

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

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

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

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

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

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

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





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

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