跳转至

等待与取消

等待用于观察原操作达到条件,不是重复提交。取消等待、取消网络请求和取消业务操作是三个不同动作。

等待合同

等待动作在自身 Schema 中声明原操作引用、观察条件、总期限与取消方式;本版不规定新的订阅传输。

AXI-WAIT-001:等待必须有总期限,期限覆盖读取和间隔暂停,并响应身份失效、范围变化及取消。到期必须返回当前有效状态或明确读取失败,不得把停止等待表述成业务已失败。

优先使用现有长轮询、订阅或带修订条件的读取。使用轮询时,执行器负责有界退避和抖动,不让模型反复调用固定暂停。服务端提示的等待间隔不等于精确完成时间。

取消范围

AXI-CANCEL-001:实现必须区分“停止本次观察”与“取消领域操作”;只有服务端确认领域取消后才能报告该操作 cancelled。客户端断开或用户关页不得自动解释为副作用已撤销。

事件 可以确认什么 不能确认什么
停止等待 客户端不再观察 业务已停止
中断网络请求 当前传输结束 请求从未被接收
取消请求已接收 服务端开始处理取消 所有副作用已撤回
服务端取消终态 合同定义的取消已发生 已付费用必然退款

竞争与迟到消息

完成和取消可能同时发生。业务服务决定原操作终态;客户端保留同一操作身份并回读确认。已经完成的操作收到取消请求时,可以返回已完成状态,不能伪造另一个取消终态。

服务端返回的进度应说明已完成单位和总量是否已知;未知总量不用假百分比。等待期间换账号后,应停止旧观察并清除无权内容,仍保留安全的原任务引用供恢复。