任务状态与统计表
引用文件
目录
引言
本文件聚焦于任务系统的“状态表”与“统计表”的设计与实现,围绕以下目标展开:
- 明确任务状态表(task_status)与任务统计表(task_statistics)的表结构与字段含义
- 解释任务状态流转机制:待处理、进行中、已完成、失败等状态的转换条件与触发时机
- 说明统计表中各类指标的计算逻辑:任务成功率、平均处理时间、并发处理能力等
- 提供状态机设计说明与统计维度的业务含义
- 说明状态变更的 日志记录机制与统计更新的触发条件
- 展示典型的状态流转图与统计数据示例
项目结构
任务状态与统计相关的内容主要分布在如下位置:
- 任务模块的数据库脚本与枚举:yudao-module-task
- 任务文档:docs/task
- BPM 流程状态枚举:yudao-module-bpm
- 定时任务基础设施:sql/mysql/infra.sql
- TDengine 时间序列统计表:sql/tdengine/*.sql
图表来源
- SQL.txt
- ExportTaskStatus.java
- DataSourceConstants.java
- base-task-info.md
- domain-dispatch.md
- export-task.md
- BpmTaskStatusEnum.java
- BpmProcessInstanceStatusEnum.java
- infra.sql
- ruoyi-vue-pro.sql
- launcher_task_result.sql
- device_runtime.sql
章节来源
- SQL.txt
- ExportTaskStatus.java
- DataSourceConstants.java
- base-task-info.md
- domain-dispatch.md
- export-task.md
- BpmTaskStatusEnum.java
- BpmProcessInstanceStatusEnum.java
- infra.sql
- ruoyi-vue-pro.sql
- launcher_task_result.sql
- device_runtime.sql
核心组件
- 任务状态枚举与状态机
- 导出任务状态:START、WAITING、PAUSE、SUCCESS、FAIL
- BPM 流程任务状态:NOT_START、RUNNING、APPROVE、REJECT、CANCEL、RETURN、APPROVING、WAIT
- BPM 流程实例状态:SYSTEM_ERROR、NOT_START、RUNNING、APPROVE、REJECT、CANCEL
- 任务统计与时间序列
- TDengine 时间序列统计表:launcher_task_result、device_runtime 及其按日/月/年聚合的稳定表
- 数据源路由:TD Engine 的多库路由常量
- 基础设施与字典
- 定时任务表 infra_job(状态字段等)
- 字典数据 system_dict_data(流程状态映射)
章节来源
- ExportTaskStatus.java
- BpmTaskStatusEnum.java
- BpmProcessInstanceStatusEnum.java
- launcher_task_result.sql
- device_runtime.sql
- DataSourceConstants.java
- infra.sql
- ruoyi-vue-pro.sql
架构总览
任务状态与统计的整体架构由“状态枚举/表结构 + 统计表 + 数据源路由 + 文档化流程”构成。
图表来源
- ExportTaskStatus.java
- BpmTaskStatusEnum.java
- launcher_task_result.sql
- device_runtime.sql
- DataSourceConstants.java
- base-task-info.md
- infra.sql
- ruoyi-vue-pro.sql
详细组件分析
任务状态表(task_status)设计
- 目标
- 记录任务的生命周期状态,支持状态机驱动的流转控制与审计
- 建议字段(基于现有枚举与脚本推导)
- 任务标识:task_id
- 当前状态:status(导出任务:START/WAITING/PAUSE/SUCCESS/FAIL;BPM:多状态)
- 创建/更新时间:create_time/update_time
- 关联上下文:如流程实例ID、租户ID、操作人等(参考任务脚本中的 bpm_status/process_instance_id/tenant_id)
- 状态机要点
- 导出任务:WAITING → START → 运行中 → SUCCESS/FAIL;PAUSE 可作为手动终止
- BPM 任务:WAIT → RUNNING → APPROVE/REJECT/CANCEL 或 RETURN/APPROVING
- 触发时机
- 启动调度、执行器回调、人工干预、异常回滚
- 日志记录建议
- 每次状态变更写入审计日志,包含变更前/后状态、操作人、时间戳、原因
图表来源
章节来源
任务统计表(task_statistics)设计
- 目标
- 基于时间序列与聚合维度,输出任务成功率、平均处理时间、并发能力等指标
- 建议字段(结合 TDengine 表结构与业务需求)
- 时间维度:ts(时间戳)、周期粒度(日/月/年)
- 业务键:data_key(唯一标识)、tags(如 advert_id、month、mac、cpu 等)
- 指标:play_count、device_duration、并发计数、错误计数等
- 指标计算逻辑
- 任务成功率:成功次数 / 总执行次数
- 平均处理时间:总耗时 / 成功次数(或按周期聚合)
- 并发处理能力:最大并发数 concurrent_max、运行中数量 running_count
- 时延分布:可基于直方图字段(如执行和结果持有时间直方图)进行分位数分析
- 统计维度
- 按广告/设备/渠道/时间等维度切分,支撑多维分析
- 更新触发条件
- 执行器回调/上报、定时聚合作业、异常告警触发
图表来源
章节来源
数据源路由与统计落库
- 数据源常量
- 包含 TD Engine 的多库路由:tdAppRuntime、tdAppRuntimeArchive、tdAppActivity* 等
- 作用
- 将不同统计维度的数据写入对应数据库,便于查询与压缩策略配置
- 建议
- 在统计服务中根据指标类型选择对应数据源,确保写入与查询一致性
章节来源
文档化流程与状态说明
- 基础任务信息、域分发策略、导出任务文档提供了业务背景与流程约束,有助于理解状态变更的业务触发点与边界
章节来源
定时任务与状态字典
- 定时任务表 infra_job 提供了任务状态字段(status),可用于统一管理任务生命周期
- 字典数据 system_dict_data 中包含流程状态映射,便于前端展示与状态校验
章节来源
依赖关系分析
- 状态枚举与表结构
- 导出任务状态枚举与任务脚本中的状态字段保持一致
- BPM 状态枚举用于流程任务与流程实例的状态判定
- 统计表与数据源
- TDengine 表结构为统计指标提供高吞吐写入与高效查询能力
- 数据源常量为多库路由提供统一入口
- 文档与实现
- 文档明确了业务边界,实现层据此设计状态机与统计维度
图表来源
章节来源
性能考量
- 写入性能
- TDengine 的稳定表与标签设计适合高并发写入与时序分析
- 建议按天/月/年设置合适的保留策略与压缩参数
- 查询性能
- 利用标签过滤与时间范围限定,避免全表扫描
- 对高频指标建立物化视图或聚合表
- 并发与一致性
- 统计更新采用批量写入与异步聚合,降低对主业务的影响
- 状态变更与统计更新解耦,通过事件或回调触发
故障排查指南
- 状态异常
- 检查状态枚举与任务表字段是否一致
- 核对 BPM 状态流转是否符合业务预期
- 统计缺失
- 确认数据源路由是否正确
- 检查 TDengine 写入是否成功、标签是否完整
- 指标异常
- 核对聚合逻辑与时间窗口
- 检查异常计数与成功计数的边界条件
结论
本文从状态表与统计表两个维度梳理了任务系统的数据结构与流程设计,给出了状态机与统计指标的实现建议,并结合 TDengine 的时序特性与数据源路由,提出了可落地的工程实践方案。实际落地时应以状态枚举与任务脚本为准绳,确保状态变更与统计更新的一致性与可观测性。
附录
- 典型状态流转示例
- 导出任务:排队 → 启动 → 执行 → 成功/失败;暂停可恢复
- BPM 任务:待审批 → 审批中 → 通过/不通过/退回/取消
- 统计示例维度
- 按广告/设备/渠道/时间聚合,输出成功率、平均耗时、并发峰值等