Назначение
Автоматизация — инструмент настройки автоматических реакций системы на события без программирования. Администратор описывает правило: при каком событии, при каких условиях и какие действия система должна выполнить. Выполнение настроенных действий берёт на себя движок рабочих процессов (см. Архитектура сервиса Автоматизации ).
Автоматизация в сочетании с Валидаторами и Вычислениями позволяет автоматизировать:
- жизненный цикл процесса (в том числе процессы согласования);
- жизненный цикл задачи и замечания;
- жизненный цикл документации (статусы файлов, публикация версий, копирование, штампы);
- рассылку оповещений по событиям;
- обмен командами с внешними системами по REST API;
- прочие прикладные сценарии.
Основные понятия
| Понятие | Где хранится | Описание |
|---|---|---|
| Правило автоматизации (триггер) | Системный список «Автоматизация» (automation) | Описывает событие: для какого Типа элемента, при изменении какого Атрибута и (необязательно) при каком значении атрибута срабатывает правило. Также определяет тип действия, которые можно к нему привязать. |
| Условие | Список «Автоматизация (условия)» (automation_condition) | Формула, которая должна вернуть Истина, чтобы действия правила были выполнены. К правилу привязывается от 0 до n условий. |
| Действие | Список «Автоматизация (действия)» (automation_action) | Операция, которую выполняет система. К правилу привязывается от 1 до n действий, все одного типа. Каждому типу действия соответствует свой обработчик (activity) в движке рабочих процессов. |
| Цепочка | Движок рабочих процессов (Elsa) | Если на одно событие настроено несколько правил, их действия объединяются в одну последовательность — динамически компонуемый процесс Elsa. |
Триггеры
Триггер — событие в системе, на которое реагирует автоматизация. В текущей реализации событием является изменение значения атрибута элемента выбранного Типа элемента (при сохранении существующего элемента), а также создание элемента: при создании все заполненные атрибуты нового элемента считаются изменёнными.
Различают два вида правил:
| Вид правила | Как задаётся | Пример |
|---|---|---|
| По значению атрибута | Заполнены «Атрибут» и «Значение». Правило срабатывает, когда атрибут принял указанное значение. Этим способом настраиваются переходы жизненного цикла на Канбан-доске. | «Статус процесса» изменился на «Согласующие» — создать задачи этапа. |
| Одиночный (по факту изменения) | Заполнен только «Атрибут», «Значение» пустое. Правило срабатывает при любом изменении атрибута, независимо от нового значения. | Изменился системный атрибут «Файл» (загружена новая версия) — сбросить статус файла; атрибут «Тип», который устанавливается однократно при создании элемента. |
Где настраивать правило
Большинство правил настраивается через Канбан-доску, где триггером служит смена значения атрибута, отражающего этапы жизненного цикла (Статус процесса, Статус задачи, Статус файла и т.п.). Правила с триггером по произвольному атрибуту или без учёта значения создаются напрямую в системном списке «Автоматизация» (Центр администрирования → Настройки → Списки → Автоматизация). Пример: Настройка сброса статуса файла при размещении новой версии .
Условия
- Условие задаётся формулой с использованием операторов сервиса Вычисления_old и должно вернуть логическое значение. Любой другой результат (пустое значение, строка, число) считается Ложью.
- Если к правилу привязано несколько условий, они объединяются по «И»: действия выполняются, только если выполнены все условия. Для логики «ИЛИ» используйте оператор
||внутри одной формулы. - Правило без условий выполняется всегда при наступлении события.
- Условия вычисляются в контексте элемента, на котором сработал триггер, и проверяются непосредственно перед выполнением каждого действия правила. Поэтому, если предыдущее действие цепочки изменило данные, от которых зависит условие, последующие действия того же правила могут быть пропущены.
- Для действия «Создать этап процесса» условия не проверяются.
Пример условия: «выполнять действия, только если процесс ещё не завершён» — This("Статус процесса.Название") != "Завершен".
Важно
При использовании в условиях функций работы со связями (Ref/Refs) в сценариях автоматического запуска процесса необходимо проверить корректность их выполнения: в ряде конфигураций такие формулы могут отрабатывать некорректно (VITROCAD-5674). Проверяйте правила на тестовой среде до внедрения в продуктивную систему.
Действия
Все действия одного правила имеют один тип и выполняются последовательно в порядке значения поля «Порядок». Действия выполняются от имени системного пользователя, поэтому права текущего пользователя на выполнение не влияют, а в атрибуте «Изменено кем» (editor) у изменённых элементов оказывается системная учётная запись.
Доступные типы действий:
| Тип действия | Назначение |
|---|---|
| Установить значение атрибута | Присвоить значение атрибуту текущего (или вычисленного формулой) элемента. |
| Установить значение атрибута связанных объектов | Присвоить значение атрибуту элементов, связанных с текущим (вложений процесса или задачи). |
| Установить права доступа | Выдать пользователям/группам уровень доступа на элемент. |
| Забрать права доступа | Снять с пользователей/групп права доступа на элемент. |
| Создать этап процесса | Создать задачи этапа процесса и дождаться их завершения. |
| Обработка вложений по результатам согласования | Установить статус вложений по решениям, принятым в задачах этапа; при необходимости завершить процесс. |
| Переход на этап | Перевести процесс, работающий по шаблону этапов, на следующий или заданный этап. |
| Вызов внешнего сервиса | Отправить HTTP-запрос во внешний (или внутренний) веб-сервис. |
| Опубликовать документ | Опубликовать версию документа с комментарием. |
| Выполнить процедуру | Выполнить формулу-процедуру (например, копирование документа). |
| Добавить штамп | Нанести на PDF-документ штамп по профилю (QR-код, штамп «В производство работ» и др.). |
| Добавить пустую страницу | Вставить в PDF-документ пустую страницу A4. |
| Отправить оповещение | Отправить оповещение по электронной почте по шаблону. |
Подробное описание атрибутов и особенностей каждого типа — на странице Типы автоматических действий и её дочерних страницах. В действиях, присваивающих значения, можно использовать формулы сервиса Вычисления_old.
Как выполняется автоматизация
- Пользователь или система сохраняет элемент; портал определяет, какие атрибуты изменились.
- Портал находит правила автоматизации, подходящие по Типу элемента, изменённому атрибуту и его новому значению.
- Правила, сработавшие на одно событие, передаются в движок рабочих процессов, который собирает из их действий единую цепочку и выполняет её.
- Перед каждым действием проверяются условия его правила; действие выполняется над элементом-триггером или над элементами из поля «Исходный элемент(ы) (формула)».
- Если действие изменило атрибут какого-либо элемента, это новое событие: могут сработать другие правила (каскад). Именно так процесс «переходит» со статуса на статус.
- Действие «Создать этап процесса» приостанавливает цепочку до завершения всех задач этапа; после этого выполнение продолжается.
Каскадные срабатывания
Избегайте правил, которые изменяют атрибут, являющийся их же триггером (или образуют замкнутый круг из нескольких правил), — это приводит к бесконечному каскаду. Для одиночных правил по «Файлу» и подобным атрибутам используйте условия, отсекающие изменения, сделанные самой автоматизацией (см. Настройка сброса статуса файла при размещении новой версии ).
Техническое описание взаимодействия портала, модуля Workflows и движка Workflow.Manager — на странице Архитектура сервиса Автоматизации .
Дублирование конфигурации Автоматизации при копировании Типа элемента
Начиная с версии 2025 (25.1) поддерживается полное дублирование Типа элемента с сохранением связанной конфигурации. При выполнении команды «Дублировать» (контекстное меню Типа элемента в Центре администрирования) система создаёт копию ТЭ, включая:
- атрибуты и их настройки;
- вычисляемые поля;
- валидаторы;
- действия (Actions);
- правила автоматизации — со всеми условиями и действиями, в том числе правила, привязанные к шаблонам рабочих процессов и их шагам.
Имя нового ТЭ формируется по принципу [Исходное название] - копия. Если такое имя уже существует, добавляется порядковый номер (- копия 1, - копия 2 и т.д.).
Подробнее — в статье Дублирование Типа элемента (VITROCAD-5681).