Работа с Задачами#

Задача — вычисление, предназначенное для одноразового запуска из Очереди.

Атрибуты сущности#

Атрибут

Описание

name

Уникальное пользовательское наименование Задачи. Атрибут доступен только на чтение. Сервис Пакетной обработки формирует уникальное значение name в новом экземпляре Task самостоятельно. Изменение наименования, после создания Task, не рекомендуется

queue

Наименование Очереди, которой принадлежит Задача. Изменение наименования Очереди, после создания Задачи, не рекомендуется

description

Необязательное произвольное описание Задачи. Строка длиной до 100 символов, приходит в кодировке UTF-8. Атрибут предназначен для облегчения поиска и отображения Задач.

httpTarget

Описание вызываемого сервиса

createTime

Дата и время создания сущности с точностью до миллисекунд. В базе данных хранится с типом данных timestamp. Заполняется автоматически и не меняется. По протоколу HTTP передается как строка в формате RFC 3339 UTC «Zulu», с точностью до миллисекунд. Пример: «2014-10-02T15:01:23.045Z». Пустое значение в ответах не рекомендуется

updateTime

Дата и время последнего изменения сущности с точностью до миллисекунд. В базе данных хранится с типом данных timestamp. По протоколу HTTP передается как строка в формате RFC 3339 UTC «Zulu», с точностью до миллисекунд. Пример: «2014-10-02T15:01:23.045Z».

state

Текущее состояние Задачи. Возможные значения: READY — Задача готова к запуску на исполнение; RUNNING — Задача запущена и выполняется; DONE — Задача успешно выполнена; FAILED — выполнение Задачи закончилось не успешно (ошибка или тайм-аут); BLOCKED — Задача заблокирована другой Задачей; CANCELED — Задача отменена. Запуск на исполнение не производится. Состояние Задачи назначается и обновляется сервисом Пакетной обработки автоматически в процессе обработки

firstAttempt

Содержит объект с описанием первой попытки запуска Задачи. Если Задача не была ни разу вызвана, значение атрибута равно null. Атрибут доступен только на чтение.

lastAttempt

Содержит объект с описанием последней попытки запуска Задачи. Если Задача не была ни разу вызвана, значение атрибута равно null. Атрибут доступен только на чтение.

retryState

Объект retryState отслеживает текущее состояние повторных попыток запуска. При каждой неудачной попытке содержимое объекта корректируется. Атрибут доступен только на чтение.

scheduleTime

Расписание запуска Задачи. Тип данных — timestamp с часовым поясом (необязательный атрибут). Может быть пустой строкой (""). Если поле не заполнено (пустая строка ""), то запуск по расписанию не выполняется, только в порядке Очереди. По протоколу HTTP передается как строка в формате RFC 3339 UTC «Zulu», с точностью до миллисекунд. Максимальное количество символов — 32. Пример: «2020-10-12T12:15:00.000Z»

dependsOn

Уникальное наименование блокирующей Задачи. Блокирующая задача может находится как в одной Очереди с текущей Задачей, так и в сторонней. Необязательный атрибут. Может быть пустой строкой (""). Если параметр не задан, то данная Задача не будет зависеть от другой Задачи

async

Параметр для установки асинхронного выполнения Задания. Возможные значения:
- true;
- false (по умолчанию)

responseTimeOut

Параметр определяет максимальное время ожидания ответа от вызываемого веб-сервиса.

Состояние Задачи#

Возможны следующие значения состояния Задачи:

Статус

Описание

READY

Задача готова к запуску на исполнение

RUNNING

Задача запущена и выполняется

QUEUED

Задача находится в Очереди на выполнение

DONE

Задача успешно выполнена

FAILED

Выполнение Задачи завершилось неуспешно (ошибка или тайм-аут)

BLOCKED

Задача заблокирована другой Задачей

CANCELED

Отменена. Запуск на исполнение не производится

INTERRUPTING

Экземпляр Задания находится в процессе прерывания выполнения

INTERRUPTED

Выполнение экземпляра Задания прервано пользователем

Возможные изменения состояния Задачи#

Действия над сущностью#

Для работы с сущностью доступны следующие действия:

  • Создание Задачи;

  • Получение атрибутов Задачи;

  • Получение атрибутов Задач;

  • Поиск Задач из списка Задач;

  • Получение суммарного количества Задач в Очереди;

  • Обновление Задачи;

  • Отмена Задачи;

  • Перезапуск Задачи;

  • Передачи финального состояния Задач;

  • Прерывание выполнения Задачи. Требуется реализовать дополнительную логику на стороне вызываемого сервиса.

Примечание

В сервисе есть возможность массового создания Задач по Шаблонам, детальнее об этом можно прочитать в разделе Работа с Шаблонами Задач.

Прерывание выполнения Задачи#

Прерывание происходит на стороне Вызываемого сервиса.

Для прерывания выполнения Задачи требуется соблюдение условий:

  • Задача находится в статусе RUNNING;

  • Задача с асинхронным типом выполнения;

  • На стороне Вызываемого сервиса реализована логика прерывания.

Изменение статусов#

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

Use Case Diagram#

@startuml
actor Пользователь as U
participant TASK as T
participant Вызываемый_сервис as S

U -->> T: 1. Запрос на прерывание задачи
T -->> S: 2. Передача запроса на прерывание
S -->> T: 3. Ответ от Вызываемого сервиса
T -->> U: 4. Отображение результата
@enduml

Особенности работы с сущностями#

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