大批量报表导出总超时,任务式导出应该交付哪些能力
任务式导出的交付重点是可追踪的任务、可解释的结果口径,以及取消、失败和权限变化时仍然明确的处理结果。
阅读目录5 个章节
大批量报表反复超时,改成后台任务时,应同时交付任务编号、可恢复查看的状态、结果取数规则、失败处理和受控下载。用户关闭页面后仍能找到原任务,重复点击不会悄悄多跑一份;“已受理”与“文件已生成”必须分开验收。后台执行只改变等待方式,不自动解决慢查询、数据一致性或权限问题。
先拿一张真实报表确定导出的边界
选一张业务正在使用的报表,记录筛选条件、输出字段、数据范围、格式、样本量及高峰时段。再说明用户为什么需要文件:核对明细、归档,还是二次计算。不同用途会影响明细精度、文件拆分和保存期限,不能只写“支持导出全部”。
这些条目可纳入软件定制开发的报表与交付范围。等待多久需要转后台、同时允许几个任务,应在目标环境用约定数据测试,不凭页面按钮数量估算。
把任务状态写到用户能做下一步
| 状态 | 用户能确认什么 | 验收重点 |
|---|---|---|
| 已受理、排队 | 有任务编号,可稍后回来查看 | 刷新、换页后不丢任务 |
| 执行中 | 当前阶段、最近更新时间 | 无可靠总量时不显示虚假百分比 |
| 取消中、已取消 | 取消已请求或后台确已停止 | 两种状态不混用,残留文件按规则处理 |
| 失败、完成、已过期 | 失败原因、结果入口或重新申请方式 | 文件缺失不能仍显示可下载 |
Microsoft 异步请求响应模式把请求受理、状态查询和最终结果分开,并说明取消请求需要后台处理后更新状态。项目可以采用其他实现,但用户看到的完成状态应有真实结果支撑。
导出期间数据变化,文件按哪个时点计算
假设排队期间新增了订单,执行中又发生退款,应先约定导出按提交时、执行开始时,还是某个业务结账时点取数。保存筛选条件并不等于保存数据快照;如果分批读取每次都查当前值,文件内也可能混入不同时间状态。
需要稳定复核时,应由开发方说明快照、批次或其他一致性实现及代价。若源接口无法提供同一时点数据,则在文件或任务记录中明确取数区间和限制,不标成无法证明的“提交时快照”。验收用导出过程中发生变更的一组记录核对明细与合计。
重复点击与失败重试要分清身份
同一次提交遇到网络响应丢失,重试应能查回原任务;用户明确选择“按最新数据重新导出”,则可以生成新任务。不要把所有相同筛选条件永久合并,也不要让浏览器每重试一次就新增后台工作。
约定去重范围、有效期、原任务失败后如何重开,以及新旧任务的关联。进程中断后,若系统从头重做,应清理未完成文件;若支持续跑,应核对已写入部分,避免重复行或遗漏。技术选择不同,验收结果都要能解释。
用异常样例验收下载和交付
- 提交后关闭页面,再登录查询,找到同一任务与原筛选条件。
- 模拟重复提交、任务失败及取消与完成同时发生,核对最终只呈现真实状态。
- 完成后改变申请人的数据权限,再打开任务和下载链接,确认按约定重新授权或拒绝访问。
- 到期后核对文件清理、入口失效与必要任务记录留存,不能留下永久公开地址。
下载权限可承接权限、安全与审计方法,但应覆盖已生成文件而不只验证导出按钮。按业务用户验收测试方法记录任务编号、操作时间、文件摘要、行数和金额核对结果,并交接队列容量、失败告警、清理规则及人工处理人。