Экземпляр Задания#

Сущность jobInstance представляет собой экземпляр запуска Задания (Job Instance), который создается автоматически после создания экземпляра Задания.

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

Атрибут

Описание

job

Наименование Задания. Обязательный атрибут

firstAttempt

Содержит объект с описанием первой попытки запуска экземпляра Задания. Если jobInstance не был ни разу запущен, значение атрибута равно null; если был запущен (state = RUNNING), то должен быть записан firstAttempt.scheduleTime. Атрибут доступен только на чтение

lastAttempt

Содержит объект с описанием последней попытки запуска экземпляра Задания. Если jobInstance не был ни разу запущен, значение атрибута равно null; если jobInstance был запущен (state = RUNNING), то должен быть записан параметр lastAttempt.scheduleTime. В том числе когда запускается переповтор, то lastAttempt обновляется. Атрибут доступен только на чтение

state

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

retryState

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

Состояния экземпляра Задания#

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

Статус

Описание

READY

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

RUNNING

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

DONE

Экземпляр Задания успешно выполнен

FAILED

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

CANCELED

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

INTERRUPTING

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

INTERRUPTED

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

Возможные изменения состояния экземпляра Задания#

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

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

  • Поиск экземпляров Задания;

  • Обновление статуса выполнения Задания;

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

  • Прерывание выполнения экземпляра Задания.

Прерывание выполнения экземпляра Задания#

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

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

  • Экземпляр Задания находится в статусе RUNNING;

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

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

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

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

Use Case Diagram#

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

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

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

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