工作流Status状态枚举:
- READY
- PREPARIN
- RUNNING
- PAUSED
- SUCCEEDED
- KILLED
- FAILED
- FAILED_FINISHING
- SKIPPED
- DISABLED
- QUEUED
- FAILED_SUCCEEDED
- CANCELLED
其中,绿色代表完成态;红色代表运行态。
BlockingStatus——一种阻塞在非完成态的状态封装类
public Status blockOnFinishedStatus() { if (status == null) { return null; } //如果当前job状态为非完成态,则一直阻塞 while (!Status.isStatusFinished(status)) { synchronized (this) { try { this.wait(WAIT_TIME); } catch (InterruptedException e) { } } } return status; } //释放锁,唤醒一个等待者 public void unblock() { synchronized (this) { this.notifyAll(); } } public void changeStatus(Status status) { synchronized (this) { this.status = status; if (Status.isStatusFinished(status)) { unblock(); } } }