Skip to content

NACEB 生命周期 ​

NACEB 有三层状态机,每层都具有自己的FSMController。

本章仅用于介绍所有的状态机与迁移状态,具体触发迁移详情请参考事件处理部分。

Event 层 ​

状态名含义从何而来到哪里去
idleEvent 创建时默认状态pushEvent()start() 后
进入blocked/queue
blockedEvent 被前置事件阻塞start()时带有 blockedBy 参数前置 Event 不再阻塞时
进入queue
queueEvent 已就绪,等待执行start()后
或blocked结束
同 scope 无 Event竞争
进入activating
activatingEvent 激活中,准备运行queue结束根据第一步任务类型
进入 processing或pending
processingPipeline 当前运行 blocked Taskactivating、pending、paused根据下一步进入pending、processing或pause、终态
pendingPipeline 当前运行 async Taskactivating、pending、paused根据下一步进入pending、processing或pause、终态
pausedEvent 对应 Pipeline 暂停对 Event 调用 pause()resume() 后根据任务类型
进入 processing或pending
doneEvent 正常结束,终态processing 或 pending 对应的 Pipeline 进入 done-
failureEvent 异常结束,终态任意状态发生失败均可直接进入-

Pipeline 层 ​

状态名含义从何而来到哪里去
pendingPipeline 创建时默认状态Event 进入 activating派发 Task 后进入 running
runningPipeline 当前已有 Task 运行pending、running、paused根据下一步进入 running、paused 或终态
pausedPipeline 暂停Task 进入 stoppedresume() 后进入 running
donePipeline 正常结束,终态$terminal Task 完成-
failurePipeline 异常结束,终态任意状态发生失败均可直接进入-

Task 层 ​

状态名含义从何而来到哪里去
pendingTask 已派发,等待执行dispatch()
或 stopped 重启
条件满足后进入 running
暂停时进入 stopped
runningTaskHandler 执行中pending正常结束进入 done
暂停进入 stopped
异常进入 failure
stoppedTask 已暂停,可重新启动pending 或 running 时暂停restart() 后进入 pending
doneTask 正常结束,终态TaskHandler 正常返回-
failureTask 异常结束,终态任意状态发生失败均可直接进入-

INFO

重启后 Instance 会保留,同时保留所有的 hook 和 state,便于内部重建。

消费 ​

所有队列在进入 done 或 failure 后都不会自己被清除。

NACEB 对完成的实例没有「清除」概念,取而代之的是「消费」。

「消费 Consume」的含义是:取走这个实例的结果,并清空结果输出,标记这个结果被「消费掉了」。

WARNING

对非终态 event 进行 consumeEvent 将直接抛错,这是为了防止误清还在运行的 event。

暂停与恢复 ​

Released under the MIT License.