Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

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

Workflow: Узел ручной обработкиCommunity Edition+

Введение

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

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

Установка

Встроенный плагин, установка не требуется.

Создание узла

В интерфейсе настройки Workflow нажмите кнопку «+» на потоке и добавьте узел «Ручная обработка»:

Создание узла ручной обработки

Настройка узла

Ответственный

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

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

Узел ручной обработки_настройка_ответственный_выбор переменной

Совет

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

Настройка пользовательского интерфейса

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

Узел ручной обработки_настройка_интерфейс

Вкладки

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

Block

Поддерживаются две основные категории Block: Block данных и Block формы. Дополнительный Markdown используется для статического текста и подсказок.

Block данных

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

Узел ручной обработки_настройка интерфейса_Block данных_триггер

Block данных по узлам аналогичен — можно показать результат вышестоящего узла. Например, результат вычислительного узла как контекст для ответственного:

Узел ручной обработки_н�астройка интерфейса_Block данных_данные узла

Совет

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

Block формы

В интерфейсе задачи нужно настроить минимум один Block формы — он определяет, продолжится ли Workflow. Без формы процесс невозможно продолжить после остановки. Существуют три типа Block формы:

  • Произвольная форма
  • Форма создания записи
  • Форма обновления записи

Узел ручной обработки_настройка интерфейса_тип формы

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

Кнопка отправки формы может быть трёх типов:

  • Продолжить процесс после отправки
  • Завершить процесс после отправки
  • Только сохранить значения формы

Узел ручной обработки_настройка интерфейса_кнопки формы

Эти три кнопки соответствуют трём состояниям обработки в Workflow: после отправки статус узла становится «Завершено», «Отклонено» либо остаётся в «Ожидании». В одной форме нужно настроить хотя бы одну из первых двух кнопок, чтобы определить дальнейшее направление процесса.

В кнопке «Продолжить процесс» можно настроить присвоение значений полям формы:

Узел ручной обработки_настройка_кнопка_назначение значений

Узел ручной обработки_настройка_кнопка_окно назначения значений

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

Block задач

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

Добавить Block

Из доступных Block страницы выберите «Workflow Задачи», чтобы добавить Block списка задач:

Узел ручной обработки_добавление Block задач

Пример Block списка задач:

Узел ручной обработки_список задач

Подробности задачи

Затем ответственный нажимает на нужную задачу и попадает в окно её обработки:

Узел ручной обработки_подробности задачи

Примеры

Согласование статьи

Допустим, обычный пользователь публикует статью, и она должна быть согласована администратором, чтобы перейти в статус «Опубликована»; иначе она остаётся черновиком (не публикуется). Этот процесс реализуется через узел ручной обработки с формой обновления.

Создайте Workflow, который запускается событием «Создание статьи», и добавьте узел ручной обработки:

Узел ручной обработки_пример_согласование статьи_оркестрация

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

Узел ручной обработки_пример_согласование статьи_Block деталей

Также добавьте Block на основе формы обновления, выбрав таблицу статей — администратор решит, согласовать ли статью; если да, статья будет обновлена в соответствии с настройками. По умолчанию у формы есть кнопка «Продолжить процесс», её можно считать кнопкой согласования; добавьте также кнопку «Завершить процесс» — для отказа:

Узел ручной обработки_пример_согласование статьи_форма и кнопки

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

Узел ручной обработки_пример_согласование статьи_поля формы

Чтобы упростить действие оператора, второй способ — настроить присвоение значения у кнопки «Продолжить процесс»: добавить поле «Статус» со значением «Опубликовано». Тогда после нажатия на кнопку статья будет переведена в статус «Опубликовано»:

Узел ручной обработки_пример_согласование статьи_назначение значений

В меню настройки Block формы (правый верхний угол) задайте условие фильтрации обновляемой записи: таблица «Статьи», условие «ID равно Переменная триггера / Данные триггера / ID»:

Узел ручной обработки_пример_согласование статьи_условие формы

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

Узел ручной обработки_пример_согласование статьи_финальная форма

Закройте панель настройки и нажмите «Сохранить». Workflow готов. После активации, при создании новой статьи Workflow запускается автоматически, администратор видит задачу в списке и переходит к её деталям:

Узел ручной обработки_пример_согласование статьи_список задач
Узел ручной обработки_пример_согласование статьи_подробности задачи

Администратор оценивает содержимое и решает, можно ли публиковать. При нажатии «Согласовано» статья получает статус «Опубликовано», иначе — остаётся черновиком.

Согласование отпуска

Допустим, сотрудник запрашивает отпуск, который должен быть согласован руководителем, чтобы вступить в силу и списаться с баланса отпусков сотрудника. Независимо от того, согласован он или отклонён, через узел запроса отправляется SMS-уведомление сотруднику (см. раздел HTTP-запрос). Эту схему можно реализовать через узел ручной обработки с произвольной формой.

Создайте Workflow, который запускается событием «Создание отпуска», и добавьте узел ручной обработки. Аналогично примеру согласования статьи, но ответственным является руководитель. Добавьте Block по данным триггера для отображения деталей отпуска и Block с произвольной формой, в которую руководитель проставит флаг согласования и причину отказа:

Узел ручной обработки_пример_согласование отпуска_настройка

В отличие от согласования статьи, поскольку нам нужно продолжать процесс в зависимости от решения руководителя, оставьте только одну кнопку «Продолжить процесс» — без «Завершить процесс».

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

Узел ручной обработки_пример_согласование отпуска_оркестрация

Условие узла перехода настраивается так: «Узел ручной обработки / Данные произвольной формы / Поле „Согласовано“ равно „Согласовано“»:

Узел ручной обработки_пример_согласование отпуска_условие

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