跳到主要内容

任务主表结构

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档详细说明了任务主表结构,重点涵盖任务表(task)的核心字段定义、任务状态枚举值、任务优先级、任务超时机制等业务字段的设计原理。文档提供了完整的字段说明,包括数据类型、长度限制、是否允许为空、默认值等约束条件,并说明了任务表与其他相关表的关联关系。

项目结构

基于代码库分析,任务相关的数据库结构主要分布在以下位置:

Mermaid Diagram Code:

graph TB
subgraph "任务模块"
A[SQL.txt<br/>任务推送SQL修改脚本]
B[TaskModelMapper.java<br/>任务型号映射器]
C[DataSourceConstants.java<br/>数据源常量]
end
subgraph "MySQL数据库"
D[infra.sql<br/>定时任务日志表]
E[ruoyi-vue-pro.sql<br/>定时任务表]
end
subgraph "TDengine数据库"
F[launcher_task_result.sql<br/>任务结果表]
end
A --> D
A --> E
A --> F
B --> A
C --> A

图表来源

章节来源

核心组件

任务主表字段定义

根据SQL脚本分析,任务相关的主表结构包含以下核心字段:

字段名数据类型长度限制允许为空默认值描述
idbigint-自增主键ID
task_idbigint--任务ID
role_idint--角色ID
task_typetinyint-1资源类型:0广告、1app、2launcher
infra_file_idbigint--文件表ID
validtinyint-1是否有效:0-是(表示草稿以外的数据已经生效),1-否
draftjson--未审批通过的草稿数据
updatervarchar64-更新者
creatorvarchar64-创建者
deletedbit10是否删除
tenant_idbigint--租户编号
bpm_statustinyint--流程状态:-1未开始(草稿)、1审批中、2审批通过、3审批不通过、4已取消
process_instance_idvarchar255-流程实例ID

关联表结构

Mermaid Diagram Code:

erDiagram
TASK {
bigint id PK
bigint task_id
tinyint task_type
bigint infra_file_id
tinyint valid
json draft
varchar updater
varchar creator
bit deleted
bigint tenant_id
tinyint bpm_status
varchar process_instance_id
}
TASK_ROLE {
bigint id PK
bigint task_id FK
int role_id
}
TASK_RULE {
int id PK
int task_id
tinyint valid
json draft
}
TASK_CHANNEL {
bigint id PK
bigint task_id
tinyint valid
json draft
}
TASK_DEVICE {
bigint id PK
bigint task_id
tinyint valid
json draft
}
TASK_MODEL {
bigint id PK
bigint task_id
tinyint valid
json draft
}
TASK_REGION {
bigint id PK
bigint task_id
tinyint valid
json draft
}
TASK ||--o{ TASK_ROLE : "关联"
TASK ||--o{ TASK_RULE : "关联"
TASK ||--o{ TASK_CHANNEL : "关联"
TASK ||--o{ TASK_DEVICE : "关联"
TASK ||--o{ TASK_MODEL : "关联"
TASK ||--o{ TASK_REGION : "关联"

图表来源

章节来源

架构概览

任务系统的整体架构采用多数据源设计,支持不同类型的存储需求:

Mermaid Diagram Code:

graph TB
subgraph "应用层"
A[任务控制器]
B[任务服务]
C[任务调度器]
end
subgraph "数据访问层"
D[TaskModelMapper]
E[数据源路由]
end
subgraph "存储层"
F[MySQL主库<br/>任务主表]
G[TDEngine时序库<br/>任务结果表]
H[专用数据源<br/>UOTA任务]
end
A --> B
B --> D
D --> E
E --> F
E --> G
E --> H
subgraph "数据源配置"
I[DEFAULT: master]
J[APP_ACTIVITY: taskAppActivity]
K[TD_ENGINE_APP_ACTIVITY_DAY: tdAppActivityDay]
L[TASK_UOTA: uota]
end
E --> I
E --> J
E --> K
E --> L

图表来源

章节来源

详细组件分析

任务状态枚举值

任务状态在不同表中有不同的实现方式:

MySQL中的任务状态

在定时任务日志表中,任务状态使用tinyint类型存储:

  • 0: 未执行
  • 1: 执行中
  • 2: 执行成功
  • 3: 执行失败

BPM流程状态

任务集成BPM流程时,使用以下状态定义:

  • -1: 未开始(草稿)
  • 1: 审批中
  • 2: 审批通过
  • 3: 审批不通过
  • 4: 已取消

任务优先级机制

系统支持任务优先级的概念,通过以下字段体现:

  • priority: 任务优先级标识
  • execute_index: 当前执行次数
  • monitor_timeout: 监控超时时间(秒)

任务超时机制

Mermaid Diagram Code:

flowchart TD
Start([任务创建]) --> SetTimeout["设置超时时间<br/>monitor_timeout"]
SetTimeout --> Enqueue["加入执行队列"]
Enqueue --> Wait["等待执行"]
Wait --> CheckTimeout{"是否超时?"}
CheckTimeout --> |否| Execute["执行任务"]
CheckTimeout --> |是| Timeout["标记超时"]
Execute --> Success["执行成功"]
Execute --> Failure["执行失败"]
Success --> Complete["任务完成"]
Failure --> Retry["重试机制"]
Retry --> CheckRetry{"重试次数<最大值?"}
CheckRetry --> |是| Enqueue
CheckRetry --> |否| FailComplete["最终失败"]
Timeout --> FailComplete
Complete --> End([结束])
FailComplete --> End

图表来源

数据流转过程

Mermaid Diagram Code:

sequenceDiagram
participant Client as "客户端"
participant API as "任务API"
participant Service as "任务服务"
participant DB as "数据库"
participant MQ as "消息队列"
Client->>API : 创建任务请求
API->>Service : 验证任务参数
Service->>DB : 插入任务记录
DB-->>Service : 返回任务ID
Service->>MQ : 发送执行消息
MQ-->>Service : 确认接收
Service->>Service : 设置超时监控
Service->>DB : 更新任务状态
DB-->>Service : 状态更新确认
Service-->>API : 返回执行结果
API-->>Client : 任务创建成功

图表来源

章节来源

依赖关系分析

外键约束关系

Mermaid Diagram Code:

erDiagram
TASK {
bigint id PK
bigint task_id UK
tinyint task_type
bigint infra_file_id
tinyint valid
json draft
varchar updater
varchar creator
bit deleted
bigint tenant_id
tinyint bpm_status
varchar process_instance_id
}
FILE_TABLE {
bigint id PK
varchar file_name
varchar file_path
int file_size
}
ROLE_TABLE {
int id PK
varchar role_name
varchar role_key
}
TENANT_TABLE {
bigint id PK
varchar tenant_name
int status
}
TASK_FILE {
bigint id PK
bigint task_id FK
bigint file_id FK
tinyint relation_type
}
TASK_ROLE {
bigint id PK
bigint task_id FK
int role_id FK
}
FILE_TABLE ||--o{ TASK_FILE : "关联"
ROLE_TABLE ||--o{ TASK_ROLE : "关联"
TENANT_TABLE ||--o{ TASK : "关联"
TASK ||--o{ TASK_FILE : "关联"
TASK ||--o{ TASK_ROLE : "关联"

图表来源

数据源依赖关系

Mermaid Diagram Code:

graph LR
subgraph "主数据源"
A[master<br/>MySQL主库]
B[taskAppActivity<br/>应用活动数据]
end
subgraph "时序数据源"
C[tdAppActivityDay<br/>日统计数据]
D[tdAppActivityMonth<br/>月统计数据]
E[tdAppActivityYear<br/>年统计数据]
F[tdAppRuntime<br/>运行记录]
G[tdAppRuntimeArchive<br/>归档数据]
end
subgraph "专用数据源"
H[uota<br/>UOTA任务]
end
A --> B
B --> C
C --> D
D --> E
B --> F
F --> G
A --> H

图表来源

章节来源

性能考虑

查询优化策略

  1. 索引设计

    • 主键索引:id (自增主键)
    • 业务索引:task_idtask_typetenant_id
    • 复合索引:(task_type, valid)(tenant_id, bpm_status)
  2. 分区策略

    • 按时间分区:按月或按季度分区
    • 按租户分区:支持多租户隔离
    • 按任务类型分区:不同类型任务分离存储
  3. 缓存策略

    • 热点数据缓存:最近使用的任务状态
    • 配置数据缓存:任务类型定义
    • 结果集缓存:频繁查询的统计结果

存储优化

  1. 数据压缩

    • JSON字段压缩存储
    • 重复数据去重
    • 历史数据归档
  2. 异步处理

    • 大数据量异步导入
    • 批量操作优化
    • 分页查询优化

故障排除指南

常见问题及解决方案

  1. 任务状态异常

    • 症状:任务状态不更新
    • 解决:检查BPM流程状态同步、监控超时配置
  2. 数据源连接问题

    • 症状:查询超时或连接失败
    • 解决:验证数据源配置、检查网络连通性
  3. 内存溢出问题

    • 症状:大批量数据处理时内存不足
    • 解决:优化分页查询、增加JVM内存、启用数据压缩
  4. 性能下降

    • 症状:查询响应时间过长
    • 解决:添加必要索引、优化SQL语句、启用查询缓存

章节来源

结论

任务主表结构设计充分考虑了业务复杂性和扩展性需求。通过多数据源架构支持不同类型的数据存储需求,通过完善的任务状态管理和超时机制确保任务执行的可靠性,通过合理的索引和分区策略保证查询性能。该设计为后续的功能扩展和性能优化奠定了良好的基础。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答