Перейти к содержанию

Основные концепции

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


Агент

Агент — это действующее лицо в системе, идентифицируемое уникальным ID (UUID) и токеном аутентификации. Агенты являются владельцами задач и инициаторами действий.


Задача (Task)

Задача — это фундаментальная единица работы в Ordinaut. Это постоянный объект, который объединяет что, когда и как выполняется автоматизация.

Объект задачи содержит: - Метаданные: title и description. - Расписание: Определяет, когда должна выполняться задача, используя schedule_kind (cron, rrule, once, event) и schedule_expr. - Конвейер: payload определяет последовательность шагов для выполнения. - Политика выполнения: Определяет, как должна выполняться задача, включая priority, max_retries, backoff_strategy и concurrency_key. - Владение: Поле created_by связывает задачу с Агентом.


Триггеры выполнения задач

Ordinaut предоставляет несколько механизмов запуска:

  • Временные триггеры (cron, rrule, once): Обрабатываются внутри сервисом APScheduler.
  • Событийные триггеры (event): Запускаются, когда внешняя система публикует событие на конечную точку API /events.
  • Условные триггеры (condition): Предназначены для запуска внешними системами, которые отслеживают определенные условия.
  • Ручные триггеры: Любая задача может быть немедленно запущена через вызов API POST /tasks/{id}/run_now.

Конвейер (Pipeline)

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


Шаг (Step)

Шаг — это единичное, атомарное действие в конвейере. Каждый шаг имеет несколько ключевых свойств:

  • id: Уникальное имя шага.
  • uses: Адрес Инструмента (Tool) для выполнения.
  • with: Аргументы для инструмента.
  • save_as: Ключ для сохранения вывода шага.
  • if: Условное выражение, определяющее, должен ли выполняться шаг.

Инструмент (Tool)

Инструмент представляет собой определенную, многоразовую возможность, которую можно вызвать из шага конвейера (например, отправка электронного письма).

Выполнение инструментов симулируется

Критически важно понимать, что ядро движка Ordinaut симулирует выполнение инструментов. Когда обрабатывается шаг с полем uses, движок подтверждает шаг, обрабатывает шаблоны ввода и генерирует макет вывода. Он не выполняет никакого реального кода для инструмента.

Фактическая реализация инструментов должна быть создана как отдельные сервисы-расширения.


Запуск (Run)

Запуск — это запись одного выполнения конвейера задачи. Он отслеживает время начала/окончания, статус (успех или неудача), количество попыток и подробный вывод.


Очередь due_work

Это внутренняя таблица базы данных, которая действует как очередь заданий. Планировщик добавляет сюда задания, а Воркеры безопасно извлекают их с помощью FOR UPDATE SKIP LOCKED для выполнения. Такое разделение является основой надежности системы.