Перейти к содержимому

Автоматизация

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

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

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

Важные замечания

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

Циклы выполнения

Когда автоматизация взаимодействует с системой Corta, она может запускать дополнительные автоматизации.

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

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

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

Схема 1. На диаграмме показан пример бесконечного цикла выполнения, где явное обновление возвращается к шагу запроса обновления.

Асинхронное выполнение

Автоматизация может выполняться синхронно или асинхронно.

  • Синхронное выполнение

    Позволяет изменять операцию, вызвавшую автоматизацию.

  • Асинхронное выполнение

    Не может влиять на исходную операцию.

    Например, асинхронная автоматизация не может изменить значения записи, которая только что создаётся или обновляется.

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

Контроль доступа

При выполнении автоматизации система Corta проверяет права доступа от имени пользователя, вызвавшего автоматизацию.

  • Если пользователь имеет доступ к ресурсу, автоматизация также сможет получить доступ к этому ресурсу.

  • Если у пользователя нет доступа, автоматизация также будет ограничена в доступе.

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

Инструменты автоматизации

Система Corta предоставляет два основных инструмента для настройки автоматизации: скрипты автоматизации и рабочие процессы.

  • Скрипты автоматизации

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

  • Рабочие процессы

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

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

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

Общая схема автоматизации

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

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

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

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

Когда компонент Corta получает запрос на взаимодействие с ресурсом, он может сгенерировать серию событий (обычно два: событие "до" и "после"), которые описывают, что должно произойти, и текущий контекст.

Например, при создании новой записи компонент отправляет события before record create (до создания записи) и after record create (после создания записи). Помимо описания, событие содержит данные о ресурсе, с которым происходит взаимодействие, а также метаданные (начальный контекст).

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

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

Некоторые процессы могут обходить шину событий и выполнять определённую автоматизацию напрямую.

Права доступа

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

Инициирующий пользователь может быть переопределён вручную с помощью явной установки контекста безопасности (параметр runAs).

Результаты выполнения автоматизации

После завершения автоматизации система возвращает результат выполнения. Этот результат может повлиять на исходную операцию.

Краткое описание влияния результата выполнения на исходную операцию:

  • Если автоматизация выполняется асинхронно, результат выполнения игнорируется и не влияет на исходную операцию.

  • Если автоматизация завершилась с неизвестной ошибкой, исходная операция отменяется, и дальнейшая обработка не выполняется.

  • Если автоматизация завершилась без ошибок и возвращает нулевое значение, исходная операция продолжается, как если бы автоматизация не выполнялась.

  • Если автоматизация завершилась без ошибок и возвращает ненулевое значение, это значение используется для замены исходного значения, если операция это позволяет.

Применение

Расширение стандартных операций

Компоненты Corta отправляют события в шину событий, когда система собирается взаимодействовать с ресурсами компонентов. Это позволяет обнаруживать определённые операции и дополнять стандартный процесс, например:

  • Создавать записи в журнале аудита,

  • Отправлять приветственные письма при регистрации нового пользователя,

  • Отменять операцию, если что-то идёт не так, с помощью генерации ошибок.

Вы можете реагировать на такие события, задавая обработчики событий "до" или "после" для системных ресурсов. Например, если вы привязываете событие beforeCreate к ресурсу записи модуля Compose, такие триггеры называются встроенными. Для соответствующей автоматизации следует использовать тот же тип триггера.

Только события "до" могут изменять исходную операцию.

Выполнение по расписанию

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

  • Триггеры по времени

    Выполняют автоматизацию в заданное время в формате ISO 8601.

    Например, 2025-01-01T10:30:00Z запустит выполнение 1 января 2025 года в 10:30 утра.

  • Триггеры по интервалу

    Выполняют автоматизацию через заданные интервалы, используя выражения cron.

    Например, 0 0 1 * * запускает выполнение в первый день каждого месяца в 00:00.

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

Более точные интервалы могут снизить производительность системы.

Вебхуки и пользовательские конечные точки

Corta позволяет выполнять автоматизацию при получении запроса на определённую конечную точку HTTP API. Это позволяет создавать пользовательские API и вебхуки для интеграции со сторонними сервисами.

Для обработки API-запросов используется событие onRequest для ресурса System Sink. Например, вы можете задать маршрут для обработки запросов POST /system/sink/api/request-demo, чтобы собирать потенциальных клиентов, отправляемых с лендинговой страницы.

Чтобы использовать маршрут Sink, его необходимо сначала зарегистрировать в системе.

Обработка email-запросов

Corta позволяет выполнять автоматизацию при получении или отправке email-сообщений системой.

Для обработки email-запросов задаются события для ресурса System Mail:

  • onReceive — для входящих писем,
  • onSend — для исходящих писем.

Сначала необходимо настроить систему в соответствии с руководством DevOps.

Общая автоматизация

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

Явные триггеры можно вызывать через REST API, что позволяет избежать использования маршрутов Sink и их дополнительной настройки.

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

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

Примеры использования

Примеры автоматизации:

  • Автоматическое заполнение недостающих значений в новой записи,

  • Создание записи в журнале аудита при изменении определённых значений записи,

  • Отправка email-сообщения при добавлении нового пользователя в систему,

  • Ежемесячная отправка отчёта руководству.

Что дальше?

  1. Чтобы глубже понять порядок выполнения и внутреннюю логику работы, изучите раздел о деталях выполнения.
  2. Ознакомьтесь с разделами о рабочих процессах и скриптах автоматизации, чтобы узнать больше о двух системах автоматизации.
  3. Для примеров реального использования ознакомьтесь с нашими готовыми приложениями. Вы можете использовать их рабочие процессы как основу для создания собственных решений.