Estados de trabalho

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.