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

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

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

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

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

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

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

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

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

超时不能直接当成失败

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

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

ZGI Workflow 把状态放回运行链

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

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

用一条真实任务验收

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

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

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

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

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

相关推荐
FPGA信号处理15 分钟前
【模式识别】第三节课:分类误差的来源与线性分类器
人工智能·分类·数据挖掘
hrrrrxeeeee16 分钟前
电商从业者AI技能提升:证书选择与商品、客服、运营场景落地
人工智能
小和尚同志5 小时前
1.8k star 的开源 token 使用量监控神器— TokenTracker
人工智能·ai编程
极客 - L U6 小时前
神经网络 - 激活函数、损失函数、优化器
人工智能·深度学习·神经网络
数字融合7 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi0117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
xiangzhihong87 小时前
创之星花店多端业务闭环拆解
人工智能
奈落247 小时前
AI 编程从助手到 Agent:基于两份资料看哪些环节可以交出去,哪些必须自己攥住
大数据·人工智能
Joker可视化开发平台7 小时前
AI短剧接棒真人剧:开机量跌七成,普通人进场窗口在收窄
大数据·人工智能