Trạng thái công việc

Công việc sẽ trải qua một loạt các trạng thái (State) trong suốt thời gian hoạt động.

Trạng thái công việc một lần

Đối với yêu cầu công việc một lần (one-time), công việc sẽ bắt đầu ở trạng thái ENQUEUED.

Ở trạng thái ENQUEUED, công việc đủ điều kiện chạy ngay khi đáp ứng các yêu cầu về Constraints và thời gian trì hoãn ban đầu. Từ phần này, công việc sẽ chuyển sang trạng thái RUNNING, sau đó, tuỳ thuộc vào kết quả công việc, trạng thái có thể chuyển sang SUCCEEDED, FAILED hoặc có thể quay lại ENQUEUED nếu kết quả là retry. Tại mọi thời điểm trong quá trình, bạn đều có thể hủy công việc. Sau đó, công việc sẽ chuyển sang trạng thái CANCELLED.

Hình 1 minh họa quy trình của công việc một lần, với các sự kiện có thể đưa công việc đó sang trạng thái khác.

Hình 1. Sơ đồ trạng thái của công việc một lần.

SUCCEEDED, FAILEDCANCELLED đều biểu thị trạng thái cuối của công việc này. Nếu công việc nằm ở bất kỳ trạng thái nào trong số này, thì giá trị mà WorkInfo.State.isFinished() trả về sẽ là true.

Trạng thái công việc định kỳ

Các trạng thái thành công và không thành công chỉ áp dụng đối với công việc theo chuỗi và một lần. Đối với công việc định kỳ, chỉ có một trạng thái cuối là CANCELLED. Lý do là công việc định kỳ không bao giờ kết thúc. Sau mỗi lần chạy, lịch biểu sẽ được thiết lập lại, bất kể kết quả là gì. Hình 2 mô tả sơ đồ ngắn gọn trạng thái của công việc định kỳ.

Hình 2. Sơ đồ trạng thái của công việc định kỳ.

Trạng thái bị chặn

Có một trạng thái cuối mà chúng tôi chưa đề cập đến, đó là BLOCKED. Trạng thái này áp dụng cho công việc được sắp xếp theo loạt hoặc chuỗi công việc. Chuỗi công việc và sơ đồ trạng thái của chúng được đề cập trong mục Sắp xếp công việc theo chuỗi.

Các bước tiếp theo

Trong mục Quản lý công việc, bạn có thể tìm hiểu thêm về cách quản lý và theo dõi tiến độ công việc.