# Общие сведения

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

Задания выполняются в фоновом режиме. Для каждого запуска сохраняются состояние, время выполнения, сообщения и сведения об ошибках.

Задание также можно запустить вручную, программно из прикладного кода или однократно в указанное время.

Путь: `Приложение «Настройка системы» > Настройки и сервисы > Менеджер заданий`.

В общем случае работа с менеджером состоит из следующих действий:

1. Пользователь создает или выбирает задание.
2. Настраивает одно или несколько расписаний.
3. Включает нужные расписания и само задание.
4. Проверяет время следующего запуска.
5. Контролирует состояние и сообщения выполнения в журнале.

Задание также можно запустить вручную или вызвать из прикладного кода без добавления постоянного расписания. Поддерживаемые способы регистрации и запуска из прикладного кода приведены на странице [«Техническое устройство и разработка»](050_technical.md#регистрация-задания).

Менеджер поддерживает:

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

## Основные понятия

| Понятие | Значение |
|---|---|
| Задание | Описание выполняемой операции и ее общих параметров: типа, исполнителя, активности и политики восстановления |
| Расписание | Правило планового запуска с заданной периодичностью и периодом действия |
| Событие запуска | Один конкретный плановый, ручной или программный запуск задания |
| Журнал задания | История событий запуска с их состояниями, параметрами, сообщениями и ошибками |

Задание и событие запуска — разные сущности. Операция **Выполнить задачу** не создает копию задания, а регистрирует новое событие запуска для существующего задания.

## Типы заданий

Тип определяет назначение задания, выполняемое действие и доступные вкладки настройки. В базовой поставке менеджер поддерживает:

- **JEXL-скрипт** — выполняет заданный программный сценарий;
- **Очистка данных** — удаляет устаревшие записи по настроенным правилам хранения.

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

## Виды запуска

**Плановый запуск**

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

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

**Ручной запуск**

Пользователь запускает включенное задание операцией **Выполнить задачу**. Менеджер создает отдельное внеплановое событие на текущее время. Ручной запуск не изменяет постоянные расписания и отображается в общем журнале задания.

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

**Программный и отложенный запуск**

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

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

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

Пошаговые действия в интерфейсе приведены на странице [«Интерфейс менеджера заданий»](020_interface.md#запуск-задания). Регистрация и запуск из прикладного кода описаны на странице [«Техническое устройство и разработка»](050_technical.md#регистрация-задания).

## Как проходит выполнение

1. Система получает основание для запуска: наступление расписания, действие пользователя или программный вызов.
2. Менеджер создает либо открывает событие запуска.
3. Планировщик передает выполнение серверу приложений.
4. Сервер приложений проверяет разрешенный интервал и выполняет операцию от имени назначенного пользователя.
5. Менеджер сохраняет состояние, время, параметры, сообщения и сведения об ошибке, если она возникла.
6. Интерфейс показывает результат в журнале задания и обновляет статистику выполнения.

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

## Журналы

Менеджер использует два разных вида журналов:

- **Журнал задания** содержит отдельные события запуска, их состояния, параметры, сообщения и ошибки. Его используют для контроля конкретного задания.
- **Журнал Quartz** содержит технические сообщения внешнего планировщика. Его используют при диагностике проблем запуска и связи с сервером приложений.

## Ограничения и особенности

- Выключенное задание нельзя запустить стандартной операцией **Выполнить задачу**.
- Выключенное расписание не создает плановых запусков, даже если само задание включено.
- Запуск вне разрешенного временного интервала завершается с ошибкой в журнале.
- Результат выполнения зависит от полномочий назначенного пользователя.
- Плановый запуск требует доступности базы данных, планировщика и сервера приложений.
- Если задание сохранило часть прикладных данных до ошибки, повторный запуск может обработать их повторно. Такие задания должны безопасно учитывать уже выполненные изменения.

Особенности принудительной синхронизации, восстановления прерванных запусков, пропущенных срабатываний и конкурентного выполнения описаны на странице [Администрирование и диагностика](040_administration.md).
