工作流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();
}
}
}