Конвейеры и инструменты
Сила Ordinaut заключается в его декларативном движке конвейеров, который выполняет последовательность шагов предсказуемым и надежным способом.
Структура конвейера
Конвейер — это JSON-массив шагов, определенных в payload
Задачи. Движок обрабатывает эти шаги по порядку, передавая контекст между ними.
{
"payload": {
"params": { "city": "Chisinau" },
"pipeline": [
{
"id": "get_weather",
"uses": "weather-api.get_forecast",
"with": {"location": "${params.city}"},
"save_as": "weather"
},
{
"id": "send_alert",
"uses": "telegram.send_message",
"if": "steps.weather.temperature > 25",
"with": {
"message": "Сегодня жарко: ${steps.weather.temperature}°C"
}
}
]
}
}
Ключевые свойства шага
id
: Уникальный идентификатор шага.uses
: Адрес Инструмента для выполнения.with
: Аргументы для инструмента (поддерживает переменные-шаблоны).save_as
: Ключ, под которым будет сохранен вывод шага.if
: Условное выражение JMESPath для пропуска шага.timeout_seconds
: Необязательный тайм-аут для вызова инструмента.max_retries
: Необязательное количество повторных попыток для шага.
Переменные-шаблоны
Вы можете динамически вставлять данные в блок with
, используя переменные-шаблоны:
${params.variable_name}
: Доступ к параметрам изpayload.params
.${steps.step_id.output_field}
: Доступ к выводу предыдущего шага.${now}
: Предоставляет текущую временную метку UTC.
Выполнение инструментов (симулированное)
Инструменты — это строительные блоки конвейеров. Однако критически важно понимать, что ядро движка Ordinaut симулирует выполнение инструментов.
Инструменты не выполняются ядром движка
Когда исполнитель конвейера встречает шаг с полем uses
, он выполняет следующие действия:
1. Обрабатывает шаблоны во входных данных в блоке with
.
2. Записывает в журнал, что вызов инструмента симулируется.
3. Генерирует макет выходных данных.
4. Если указано save_as
, сохраняет этот макет в контекст.
Движок не имеет каталога инструментов и не выполняет никакого внешнего кода. Фактическая реализация инструментов должна быть создана как отдельные сервисы-расширения.
Обработка ошибок
Если шаг завершается неудачно (например, из-за ошибки обработки шаблона), движок будет соблюдать политику max_retries
. Если все повторные попытки завершаются неудачно, весь запуск конвейера помечается как неудачный
, и детали ошибки записываются в объект Запуска.