Штаты, где вы работаете

За время своего существования произведение проходит через ряд изменений State.

Однократные рабочие состояния

Для запроса на работу one-time работа начинается в состоянии ENQUEUED.

В состоянии ENQUEUED задача может быть запущена, как только будут выполнены требования к Constraints и начальной задержке. Затем он переходит в состояние RUNNING, а после этого в зависимости от результата работы – в состояние SUCCEEDED, FAILED или обратно в состояние ENQUEUED, если результат – retry. На любом этапе процесса работу можно отменить, после чего она перейдет в состояние CANCELLED.

На рисунке 1 показан жизненный цикл однократной задачи и события, которые могут изменить ее состояние.

Рисунок 1. Диаграмма состояний для однократной задачи.

SUCCEEDED, FAILED и CANCELLED – это конечные статусы. Если ваша работа находится в одном из этих состояний, WorkInfo.State.isFinished() возвращает значение true.

Состояния периодической работы

Статусы успешного и неуспешного выполнения применяются только к однократным и связанным задачам. Для периодических задач есть только одно конечное состояние – CANCELLED. Это связано с тем, что периодическая работа никогда не заканчивается. После каждого выполнения он планируется заново, независимо от результата. На рисунке 2 показана сокращенная диаграмма состояний для периодической работы.

Рисунок 2. Диаграмма состояний для периодической работы.

Заблокировано

Есть ещё одно состояние, о котором мы не упомянули, – BLOCKED. Это состояние относится к работе, которая организована в виде серии или цепочки работ. Цепочки задач и их диаграмма состояний описаны в разделе Связывание задач.

Дальнейшие действия

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