工作在其整个生命周期内经历了一系列 State
更改。
一次性工作的状态
对于 one-time
工作请求,工作的初始状态为 ENQUEUED
。
在 ENQUEUED
状态下,您的工作会在满足其 Constraints
和初始延迟计时要求后立即运行。接下来,该工作会转为 RUNNING
状态,然后可能会根据工作的结果转为 SUCCEEDED
、FAILED
状态;或者,如果结果是 retry
,它可能会回到 ENQUEUED
状态。在此过程中,随时都可以取消工作,取消后工作将进入 CANCELLED
状态。
图 1 展示了一次性工作的生命周期,事件可能会进入另一个状态。
图 1. 一次性工作的状态图。
SUCCEEDED
、FAILED
和 CANCELLED
均表示此工作的终止状态。如果您的工作处于上述任何状态,WorkInfo.State.isFinished()
都将返回 true。
定期工作的状态
成功和失败状态仅适用于一次性工作和链式工作。定期工作只有一个终止状态 CANCELLED
。这是因为定期工作永远不会结束。每次运行后,无论结果如何,系统都会重新对其进行调度。图 2 描述了定期工作的精简状态图。
图 2. 定期工作的状态图。
BLOCKED 状态
还有一种我们尚未提到的最终状态,那就是 BLOCKED
。此状态适用于一系列已编排的工作,或者说工作链。链接工作中介绍了工作链及其状态图。
后续步骤
在管理工作中,您将详细了解如何管理和监控工作的进度。