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

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

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

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

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

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

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

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

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

超时不能直接当成失败

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

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

ZGI Workflow 把状态放回运行链

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

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

用一条真实任务验收

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

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

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

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

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

相关推荐
ZGIAI13 分钟前
ZGI Agent 发布:配置改了,线上为何还是旧版本
人工智能·架构
richard_first29 分钟前
英伟达“循环融资”AI实验室:模式解析与行业影响
人工智能
2601_9556624641 分钟前
短视频配音 7 款测评:旁白情绪、断句、呼吸感完整打分
人工智能·音视频·语音识别
宸津-代码粉碎机44 分钟前
AI工程化高阶实战|从Demo到生产落地核心架构、全套源码与避坑指南
java·大数据·开发语言·人工智能·python·架构
志栋智能1 小时前
超自动化运维:支持微服务架构的运维模式
运维·架构·自动化
智码看视界1 小时前
Edge AI 全栈1:ESP32 传感器采集到云端大模型推理的完整链路
人工智能·物联网·嵌入式·esp32·aiot·全栈开发·edgeai
MartinYeung51 小时前
Uniswap v4 许可池:重塑 DeFi 流动性管理的范式革命
人工智能·区块链
自由能燃气设备1 小时前
燃气热水锅炉/全预混低氮冷凝锅炉哪个品牌好?哪家好?6大商用品牌横评
大数据·数据库·人工智能
智购科技智能售货柜1 小时前
2026自动售货机设备能耗计量系统:从功率监测到能效分析的工程实践~YH
数据库·人工智能·redis·缓存·架构·perl·symfony