工作在其生命周期中会经历一系列 State
更改。
一次性工作状态
对于 一次性
工作请求,您的工作以 ENQUEUED
状态开始。
在 ENQUEUED
状态下,一旦满足其 Constraints
和初始延迟时间要求,您的工作就可以运行。从那里,它会进入 RUNNING
状态,然后根据工作结果,它可能会进入 SUCCEEDED
、FAILED
>,或者如果结果是 retry
,则可能返回 ENQUEUED
状态。在此过程中的任何时候,工作都可以被取消,此时它将进入 CANCELLED
状态。
图 1 说明了一次性工作的生命周期,以及可能使其进入其他状态的事件。
图 1. 一次性工作的状态图。
SUCCEEDED
、FAILED
和 CANCELLED
都代表此工作的终止状态。如果您的工作处于这些状态中的任何一个,WorkInfo.State.isFinished()
将返回 true。
周期性工作状态
成功和失败状态仅适用于一次性工作和链式工作。对于周期性工作,只有一个终止状态,即 CANCELLED
。这是因为周期性工作永不结束。每次运行后,无论结果如何,它都会被重新调度。图 2 描述了周期性工作的简化状态图。
图 2. 周期性工作的状态图。
阻塞状态
我们还有一个未提及的最终状态,那就是 BLOCKED
。此状态适用于按系列或工作链编排的工作。工作链及其状态图在链式工作中有所介绍。
后续步骤
在管理工作中,您将了解更多关于如何管理和监控工作进度。