Ao longo do ciclo de vida, o trabalho passa por uma
série de mudanças de State
.
Estados de trabalho único
Para uma
solicitação de trabalho one-time
,
seu trabalho começa no
estado ENQUEUED
.
No estado ENQUEUED
, o trabalho se qualifica para ser executado assim que as
Constraints
e os requisitos de tempo de atraso inicial
dele são atendidos. A partir daí, ele passa para um
estado RUNNING
e,
dependendo do resultado, pode ser movido para
SUCCEEDED
,
FAILED
ou possivelmente de volta para
ENQUEUED
, caso o resultado seja
retry
. A qualquer
momento no processo, o trabalho pode ser cancelado. Se isso ocorrer, ele passará para o
estado CANCELLED
.
A Figura 1 ilustra a vida útil de um trabalho único, com os eventos que podem levar a outro estado.
Figura 1. Diagrama de estado para trabalho único.
SUCCEEDED
, FAILED
e CANCELLED
representam um estado terminal para esse
trabalho. Se o trabalho estiver em qualquer um desses estados,
WorkInfo.State.isFinished()
retornará "true".
Estados de trabalho periódico
Os estados de sucesso e falha se aplicam apenas a trabalhos únicos e
encadeados.
Para um trabalho periódico,
há apenas um estado terminal, CANCELLED
. Isso ocorre porque o trabalho periódico
nunca termina. Após cada execução, ele é reprogramado, independentemente do resultado. A Figura
2 ilustra o diagrama de estado condensado para trabalhos periódicos.
Figura 2. Diagrama de estado para trabalho periódico.
Estado bloqueado
Há um estado final que ainda não mencionamos: BLOCKED
. Esse
estado se aplica ao trabalho orquestrado em uma série ou cadeia de trabalho. As cadeias
de trabalho e o diagrama de estado delas são abordados em
Como encadear trabalhos.
A seguir
Em Como gerenciar trabalhos, você aprenderá mais sobre como gerenciar e monitorar o progresso do seu trabalho.