工作状态

工作在其整个生命周期内经历了一系列 State 更改。

一次性工作的状态

对于 one-time 工作请求,工作的初始状态为 ENQUEUED

ENQUEUED 状态下,您的工作会在满足其 Constraints 和初始延迟计时要求后立即运行。接下来,该工作会转为 RUNNING 状态,然后可能会根据工作的结果转为 SUCCEEDEDFAILED 状态;或者,如果结果是 retry,它可能会回到 ENQUEUED 状态。在此过程中,随时都可以取消工作,取消后工作将进入 CANCELLED 状态。

图 1 展示了一次性工作的生命周期,事件可能会进入另一个状态。

图 1. 一次性工作的状态图。

SUCCEEDEDFAILEDCANCELLED 均表示此工作的终止状态。如果您的工作处于上述任何状态,WorkInfo.State.isFinished() 都将返回 true。

定期工作的状态

成功和失败状态仅适用于一次性工作和链式工作定期工作只有一个终止状态 CANCELLED。这是因为定期工作永远不会结束。每次运行后,无论结果如何,系统都会重新对其进行调度。图 2 描述了定期工作的精简状态图。

图 2. 定期工作的状态图。

BLOCKED 状态

还有一种我们尚未提到的最终状态,那就是 BLOCKED。此状态适用于一系列已编排的工作,或者说工作链。链接工作中介绍了工作链及其状态图。

后续步骤

管理工作中,您将详细了解如何管理和监控工作的进度。