ZGI Workflow:外部接口成功后,任务状态怎么落下来

企业流程经常要调用订单、财务、人事或消息系统。接口返回成功,只说明对方收到并处理了请求的一部分;工作流还要把回执接回当前任务,更新节点状态,保存可查询的业务编号。缺少这一步,用户看到的页面状态和业务系统里的真实结果就可能不一致。

概念示意图:外部接口回执回到 Workflow 状态,任务才能判断业务是否真正完成。

请求发出后,至少要留下三类信息

每次外部调用都应记录本次任务、执行节点和目标对象。请求编号用于向外部系统查询,节点编号用于回到工作流定位位置,目标对象用于确认这次动作作用在哪条订单、哪张发票或哪个员工记录上。

接口响应还要区分业务成功、业务拒绝、参数错误和结果未知。HTTP 200 只能说明网络层收到响应,不能替代外部系统的业务状态。对付款、写入、发消息等动作,最好保存外部返回的状态和时间。

页面状态和业务状态需要分开看

工作流节点可能处于运行中、成功、失败或等待。外部系统还可能返回已受理、处理中、已完成、已拒绝等状态。两组状态并非一一对应:请求已受理时,节点可以进入等待;业务完成后,节点才适合标记为成功。

工作流状态 外部回执 后续动作
运行中 尚未收到 等待或按策略查询
等待 已受理、处理中 保存编号,等待更新
成功 已完成 写入最终结果并通知
失败 业务拒绝、参数错误 停止并返回原因
结果未知 超时或连接中断 先查外部状态,再决定是否重试

超时不能直接当成失败

调用超过等待时间时,外部系统可能根本没收到请求,也可能已经完成动作,只是响应没有回来。此时直接重试,容易产生重复订单、重复通知或重复写入。

更稳妥的路径是保存原请求编号和幂等键,先查询外部系统是否已有对应结果。查到已完成,就把回执补回任务;查到未受理,再根据错误类型决定是否重试;始终无法确认时,保留"结果未知"并交给人工判断。

ZGI Workflow 把状态放回运行链

ZGI Workflow 的运行记录包含版本、节点状态、输入输出和事件信息。接入外部系统时,可以让调用节点输出请求编号、目标对象和响应状态,再由后续节点决定查询、等待、通知或人工处理。

这里需要团队补齐外部接口的业务规则。ZGI 能够承接节点和状态的组织,接口是否支持幂等、查询接口怎样设计、哪些状态允许重试,仍取决于具体业务系统。

用一条真实任务验收

挑一条会写入外部系统的任务,分别模拟正常响应、业务拒绝、网络超时和响应丢失。每种情况都检查工作流节点状态、外部业务编号、重试行为和最终通知。特别关注"请求已成功但响应丢失"这条路径,它最容易被误判成可直接重试。

当运行记录能回答"谁发起、调用哪个接口、作用于哪个对象、外部返回什么、任务现在停在哪里",排查才有稳定入口。业务系统的最终状态也应成为任务完成条件的一部分。

对于需要异步处理的接口,还要约定查询间隔、最长等待时间和人工接管条件。状态长时间没有变化时,系统可以提醒负责人查看外部系统,而不是让同一节点无期限保持运行。每一次查询都沿用原请求编号,便于把多次回执归并到同一条任务记录。

GitHub:https://github.com/zgiai/zgi

Gitee:https://gitee.com/zgiai/zgi

相关推荐
万物智能信息科技31 分钟前
PWM散热风扇设置—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·华为·开源·harmonyos·鸿蒙
catcatuncle34 分钟前
读了一个开源 AI Agent 的源码后,我重新思考了"文件验收"这件事
人工智能
二川bro35 分钟前
Agent安全执行命令:命令分级+Hook+读写锁
人工智能
AI天行健35 分钟前
AI视频热缓存命中率89%:无限画布Vera1.1调参方案与数据验证
人工智能·ai
Fang_YuanAI37 分钟前
AIGC原生IP到底应该怎么做?
人工智能·ai·aigc·mcn·ai短剧·ip孵化·aigc创作
IamZJT_37 分钟前
01|先跑起来:用大模型和一个查询工具处理文字工单
人工智能
星火102438 分钟前
【从 0 到 1 动手造 Agent】(组件篇)06、向量库:让 Agent 按「意思」找东西
人工智能·agent
IamZJT_40 分钟前
Agent 系统工程 03|工具执行成功但回执丢了,重试还是不重试?
人工智能
IamZJT_42 分钟前
拆开 DeepSeek Harness 03|模型已经回答完了,Agent 为什么还没结束?
人工智能
AI创界者1 小时前
【Python进阶】重构经典设计模式:单例、工厂、观察者在现代 Python (3.10+) 中的最佳演进
人工智能·aigc