异步动作 StatefulActionNode

Asynchronous Action 即一个需要很长时间才能完成的动作,在完成标准未满足时会返回 RUNNING。

异步动作有以下要求:

  • 该方法 tick() 不应阻塞太久,执行流程应尽快返回。
  • 如果调用 halt() 方法,应尽快中止。

StatefulActionNode 是实现异步动作的首选方式。当你的代码包含请求-回复模式时,它特别有用,即动作向另一个进程发送异步请求,并定期检查回复是否已收到。根据那则回复,它可能会返回 SUCCESS 或 FAILURE。

StatefulActionNode 的派生类必须重写以下虚拟方法,而不是 tick()

  • NodeStatus onStart() :当节点处于 IDLE 状态时被调用。它可能会立即成功或失败,或者返回 RUNNING。在后一种情况下,下次收到 tick 时,方法 onRunning 将被执行。

  • NodeStatus onRunning() : 当节点处于 RUNNING 状态时调用。返回新状态。

  • void onHalted() : 当此节点被树中的另一个节点中止时调用。