# 天风任务系统 (AMR Task System) 数据库完整分析

## 1. 系统概述

天风任务模块是一个管理和编排自动化移动机器人(AMR)任务的系统。该系统允许用户创建、调度和监控各种类型的机器人任务，包括物料运输、站点状态管理等。系统采用模块化设计，通过任务模板、任务定义、任务执行记录等组件实现灵活的任务管理。

## 2. 完整数据库表结构及功能分析

### 2.1 核心任务定义和执行相关表

#### vwed_taskdef（任务定义表）
- **功能**：定义任务模板，包含任务流程和逻辑
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 任务定义唯一标识
  - `label`: VARCHAR(255) - 任务名称标签
  - `created_by`: VARCHAR(255) - 创建用户ID
  - `version`: INT - 任务版本号
  - `detail`: LONGTEXT - 任务详细定义（JSON格式，包含输入参数、根块配置等）
  - `template_name`: VARCHAR(255) - 所使用的模板名称
  - `period`: INT NOT NULL DEFAULT 1000 - 周期时间（毫秒）
  - `periodic_task`: INT NOT NULL DEFAULT 0 - 是否为周期任务
  - `status`: INT DEFAULT 0 - 任务状态
  - `if_enable`: INT NOT NULL DEFAULT 0 - 是否启用
  - `delay`: INT NOT NULL DEFAULT 3000 - 延迟时间（毫秒）
  - `release_sites`: BIT(1) - 释放站点
  - `create_date`: DATETIME - 创建日期
  - `remark`: VARCHAR(255) - 备注
  - `tenant_id`: VARCHAR(255) NOT NULL - 租户ID，用于多租户隔离
  - `map_id`: VARCHAR(255) NOT NULL - 地图ID
  - `user_token`: VARCHAR(500) - 用户token值，每次请求需要用到的认证信息
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记）


#### vwed_taskrecord（任务执行记录表）
- **功能**：记录任务的执行情况和结果
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 记录ID
  - `def_id`: VARCHAR(255) - 对应的任务定义ID
  - `def_label`: VARCHAR(150) - 任务标签
  - `def_version`: INT - 任务定义版本
  - `ended_on`: DATETIME - 结束时间
  - `ended_reason`: LONGTEXT - 结束原因
  - `status`: INT - 任务状态（1000: 运行成功, 1001: 进行中, 1002: 队列中, 2000: 失败, 2001: 取消, 2002: 暂停）
  - `input_params`: LONGTEXT - 输入参数
  - `path`: TEXT - 执行路径（记录AGV移动路径）
  - `agv_id`: VARCHAR(150) - 执行任务的AGV设备ID
  - `parent_task_record_id`: VARCHAR(255) - 父任务记录ID
  - `root_task_record_id`: VARCHAR(255) - 根任务记录ID
  - `state_description`: VARCHAR(255) - 状态描述
  - `executor_time`: INT - 执行时间
  - `first_executor_time`: DATETIME - 首次执行时间
  - `if_have_child_task`: BIT(1) - 是否有子任务
  - `periodic_task`: INT NOT NULL DEFAULT 0 - 是否为周期任务
  - `priority`: INT NOT NULL DEFAULT 1 - 优先级
  - `root_block_state_id`: VARCHAR(255) - 根块状态ID
  - `work_stations`: VARCHAR(255) - 工作站
  - `work_types`: VARCHAR(255) - 工作类型
  - `task_def_detail`: LONGTEXT - 任务定义详情
  - `variables`: LONGTEXT - 变量信息
  - `call_work_station`: VARCHAR(255) - 调用工作站
  - `call_work_type`: VARCHAR(255) - 调用工作类型
  - `source_type`: INT NOT NULL - 任务来源类型（1: 系统调度, 2: 呼叫机, 3: 第三方系统, 4: 手持电脑）
  - `source_system`: VARCHAR(100) NOT NULL - 来源系统标识（如：WMS、MES等系统编号）
  - `source_user`: VARCHAR(100) - 下达任务的用户ID或账号
  - `source_device`: VARCHAR(255) NOT NULL - 下达任务的硬件设备标识（设备ID、MAC地址等）
  - `source_ip`: VARCHAR(50) - 下达任务的IP地址
  - `source_time`: DATETIME NOT NULL - 任务下达时间
  - `source_client_info`: TEXT - 客户端设备信息（用户代理、浏览器、操作系统等）
  - `source_remarks`: TEXT - 任务来源备注信息
  - `allow_restart_same_location`: BOOLEAN DEFAULT FALSE - 运行状态时相同地址是否可再次启动该任务
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记）

#### vwed_tasklog（任务日志表）
- **功能**：记录任务执行过程中的详细日志信息，用于监控和调试
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 日志记录ID
  - `level`: INT - 日志级别（1: 信息, 3: 错误等）
  - `message`: LONGTEXT - 日志消息内容
  - `task_block_id`: INT - 任务块ID
  - `task_id`: VARCHAR(255) - 对应的任务定义ID
  - `task_record_id`: VARCHAR(255) - 对应的任务执行记录ID
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记）

#### vwed_blockrecord（任务块执行记录表）
- **功能**：记录任务块的执行情况，一个任务由多个任务块组成
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 记录ID
  - `block_name`: VARCHAR(255) - 块名称
  - `block_id`: VARCHAR(255) - 块ID
  - `block_config_id`: VARCHAR(255) - 块配置ID
  - `block_input_params`: LONGTEXT - 块输入参数
  - `block_input_params_value`: LONGTEXT - 块输入参数值
  - `block_out_params_value`: LONGTEXT - 块输出参数值
  - `block_internal_variables`: LONGTEXT - 块内部变量
  - `task_id`: VARCHAR(255) - 关联的任务定义ID
  - `task_record_id`: VARCHAR(255) - 关联的任务记录ID
  - `started_on`: DATETIME - 开始时间
  - `ended_on`: DATETIME - 结束时间
  - `ended_reason`: LONGTEXT - 结束原因
  - `status`: INT - 块执行状态
  - `ctrl_status`: INT - 控制状态
  - `input_params`: LONGTEXT - 输入参数
  - `internal_variables`: LONGTEXT - 内部变量
  - `output_params`: LONGTEXT - 输出参数
  - `version`: INT - 版本号
  - `remark`: LONGTEXT - 备注
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记）

### 2.2 任务模板和配置相关表

#### vwed_tasktemplate（任务模板表）
- **功能**：定义可用的任务模板类型
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 模板ID
  - `template_name`: VARCHAR(255) NOT NULL - 模板名称
  - `template_description`: VARCHAR(255) NOT NULL - 模板描述
  - `template_if_enable`: INT NOT NULL DEFAULT 0 - 是否启用
  - `template_dir`: VARCHAR(255) - 模板目录
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记）

### 2.3 数据缓存相关表

#### vwed_datacache（数据缓存表）
- **功能**：存储系统配置和临时数据
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 缓存ID
  - `data`: LONGTEXT - 缓存数据（JSON格式）
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 

#### vwed_datacachesplit（用户数据缓存表）
- **功能**：存储用户特定的缓存数据，支持更高效的数据索引和检索
- **主要字段**：
  - `id`: VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL PRIMARY KEY - 缓存记录ID
  - `data_key`: LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL - 数据键名
  - `data_value`: LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL - 数据值
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 
  - INDEX `dataKeyIndex`(`data_key`(768) ASC) USING BTREE - 数据键名索引，提高查询效率

#### modbus_config（Modbus配置表）
- **功能**：存储Modbus通信配置参数，用于PLC等设备的通信连接和数据交换
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 配置记录ID
  - `name`: VARCHAR(255) NOT NULL - 配置名称（如"料道信号监控-PLC-1"）
  - `ip`: VARCHAR(50) NOT NULL - 设备IP地址
  - `port`: INT NOT NULL - 通信端口号
  - `slave_id`: INT NOT NULL - 从站ID
  - `address_type`: VARCHAR(10) NOT NULL - 地址类型（如"3x"）
  - `address_number`: INT NOT NULL - 地址编号
  - `task_id`: VARCHAR(255) - 天风任务id
  - `target_value`: INT - 目标值
  - `remark`: VARCHAR(255) - 备注（如"1为货物到位，0为空"）
  - `status`: INT DEFAULT 0 - 状态（1:启用, 0:禁用）
  - `tenant_id`: VARCHAR(255) - 租户ID
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 

### 2.4 在线脚本相关表

#### vwed_script（在线脚本表）
- **功能**：存储系统中的Python脚本
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 脚本唯一标识
  - `name`: VARCHAR(255) NOT NULL - 脚本名称
  - `folder_path`: VARCHAR(255) DEFAULT '/' - 脚本所在目录路径
  - `file_name`: VARCHAR(255) NOT NULL - 脚本文件名
  - `description`: VARCHAR(500) - 脚本功能描述
  - `code`: LONGTEXT NOT NULL - 脚本代码内容
  - `version`: INT NOT NULL DEFAULT 1 - 当前版本号
  - `status`: INT NOT NULL DEFAULT 1 - 状态(1:启用, 0:禁用)
  - `is_public`: BIT(1) NOT NULL DEFAULT 1 - 是否公开
  - `tags`: VARCHAR(255) - 标签，用于分类查询
  - `created_by`: VARCHAR(255) - 创建者
  - `updated_by`: VARCHAR(255) - 最后更新者
  - `test_params`: LONGTEXT - 测试参数(JSON格式)
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 

  - UNIQUE KEY `uk_folder_filename` (`folder_path`, `file_name`) - 确保同目录下文件名唯一

#### vwed_script_version（脚本版本表）
- **功能**：保存脚本历史版本
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 版本记录ID
  - `script_id`: VARCHAR(255) NOT NULL - 关联的脚本ID
  - `version`: INT NOT NULL - 版本号
  - `code`: LONGTEXT NOT NULL - 该版本代码
  - `change_log`: TEXT - 版本变更说明
  - `created_by`: VARCHAR(255) - 创建者
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 
  - UNIQUE KEY `uk_script_version` (`script_id`, `version`) - 确保脚本版本唯一

#### vwed_script_log（脚本执行日志表）
- **功能**：记录脚本执行情况
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 日志ID
  - `script_id`: VARCHAR(255) NOT NULL - 关联的脚本ID
  - `version`: INT NOT NULL - 使用的脚本版本
  - `task_record_id`: VARCHAR(255) - 关联的任务记录ID
  - `block_record_id`: VARCHAR(255) - 关联的任务块记录ID
  - `input_params`: LONGTEXT - 输入参数(JSON格式)
  - `output_result`: LONGTEXT - 输出结果(JSON格式)
  - `status`: INT - 执行状态(1:成功, 0:失败)
  - `error_message`: TEXT - 错误信息
  - `execution_time`: INT - 执行耗时(毫秒)
  - `started_on`: DATETIME - 开始时间
  - `ended_on`: DATETIME - 结束时间
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 


### 2.5 接口定义相关表

#### interfacedefhistory（接口定义历史表）
- **功能**：存储系统接口的定义和版本历史
- **主要字段**：
  - `id`: VARCHAR(255) NOT NULL PRIMARY KEY - 接口定义历史记录ID
  - `create_date`: DATETIME - 创建日期
  - `detail`: LONGTEXT - 接口详细定义（JSON格式）
  - `method`: VARCHAR(255) NOT NULL - 请求方法(GET, POST, PUT, DELETE等)
  - `project_id`: VARCHAR(255) - 关联的项目ID
  - `url`: VARCHAR(255) NOT NULL - 接口URL
  - `version`: INT - 版本号
  - `created_at`: DATETIME - 创建时间
  - `updated_at`: DATETIME - 更新时间
  - `is_deleted`: DATETIME - 是否删除（软删除标记） 
  - UNIQUE INDEX `uniq`(`method`, `url`, `version`) - 确保接口定义唯一

## 3. 表关系图

```
┌─────────────────────────┐        ┌────────────────────────┐        ┌───────────────────────┐
│  t_windtasktemplate     │───────▶│    t_windtaskdef      │◀───────│  t_wind_script        │
│  (任务模板表)            │        │    (任务定义表)        │         │  (在线脚本表)          │
└─────────────────────────┘        └──────────┬─────────────┘        └───────────┬───────────┘
                                     ▲        │                                  │
                                     │        │                                  │
            ┌───────────────────────┐│        │                                  │
            │  t_interfacedefhistory|│        │                                  │
            │  (接口定义历史表)      │┘        │                                  │
            └───────────────────────┘         │                                  │
                                              │                                  │
                                              │ 实例化                            │ 版本管理
                                              ▼                                  ▼
                                   ┌────────────────────────┐         ┌───────────────────────┐
                                   │  t_windtaskrecord      │         │  t_wind_script_version│
                                   │  (任务执行记录表)       │          │  (脚本版本表)         │
                                   └──────────┬─────────────┘         └───────────────────────┘
                                              │
                                              ├────────────────┐
                                              │                │
                                              ▼                ▼
                               ┌────────────────────────┐    ┌────────────────────────┐
                               │  t_windblockrecord     │───▶│  t_windtasklog         │
                               │  (任务块执行记录表)     │     │  (任务日志表)           │
                               └────┬───────────────────┘    └────────────────────────┘
                                    │         
                                    │         
                                    ▼         
                    ┌────────────────────┐    ┌────────────────────┐
                    │  t_winddatacache   │    │  t_modbus_config   │
                    │  (数据缓存表)       │    │  (Modbus配置表)     │
                    └────────────────────┘    └────────────────────┘
                                            
                                            
                                 ┌────────────────────────┐     ┌────────────────────┐
                                 │  t_wind_script_log     │◀────│  t_wind_script    │
                                 │  (脚本执行日志表)       │     │  (在线脚本表)       │
                                 └────────────────────────┘     └────────────────────┘
```

## 4. 简化数据流分析

### 4.1 任务创建与执行流程

1. **任务定义阶段**：
   - 在`t_windtaskdef`表中创建任务定义
   - 任务定义关联到特定的任务模板（`t_windtasktemplate`）
   - 当任务包含ScriptBp组件时，会在`detail`中引用`t_wind_script`表的脚本
   - 当任务包含接口调用组件时，会在`detail`中引用`t_interfacedefhistory`表的接口
   - 定义输入参数、根块配置等详细信息

2. **任务实例化阶段**：
   - 当任务被触发时，在`t_windtaskrecord`表中创建记录
   - 系统根据任务定义的`input_params`传入参数
   - 如果是子任务，会记录`parent_task_record_id`

3. **任务执行阶段**：
   - 系统解析任务定义中的`detail`字段，确定执行流程
   - 任务执行过程中，为每个执行块在`t_windblockrecord`表中创建记录
   - 当执行到ScriptBp块时，系统会调用相应的Python脚本执行
   - 当任务需要与PLC等设备通信时，会查询`t_modbus_config`表获取通信配置
   - 块执行记录包含输入参数、输出参数、状态等信息
   - AGV执行路径被记录在任务记录的`path`字段中
   - 执行过程中可能需要访问或更新`t_winddatacache`中的数据

4. **任务完成阶段**：
   - 任务执行完成后，更新`t_windtaskrecord`中的状态、结束时间、结束原因
   - 同时更新所有相关块记录的状态

## 5. 任务类型分析

从任务模板表（`t_windtasktemplate`）和任务定义表（`t_windtaskdef`）中，可以看出系统支持以下几种任务类型：

1. **流水线生产任务** (Pulsating production line)：
   - 执行从一个位置到多个目标位置的物料运输
   - 适用于生产线场景，需要在多个工位间循环运送物料

2. **组装订单任务** (Assemble order)：
   - 处理从起点到终点的物料运输
   - 适用于物料从源头到目的地的直接运输

3. **高密度库位任务** (Dense peak bit)：
   - 用于高密度存储区域的物料移动
   - 包括三种子类型：
     - lineOne：从密集区到单点
     - lineTwo：从单点到密集区
     - updateSite：更新站点状态
   - 适用于仓库密集货架区域的物料存取

4. **用户自定义任务** (userTemplate)：
   - 允许用户自定义任务流程
   - 大部分在系统中的任务使用这种模板
   - 提供最大的灵活性，可以组合各种任务块

## 6. 任务块类型和逻辑分析

### 6.1 主要任务块类型

从`t_windblockrecord`和`t_windtaskdef`的详细字段分析，系统使用以下主要任务块类型：

1. **RootBp**：任务根块，所有任务的入口点
2. **CurrentTimeStampBp**：获取当前时间戳
3. **QueryIdleSiteBp**：查询空闲站点
4. **GetIdleSiteBp**：获取空闲站点
5. **GetIdleCrowdedSiteBp**：获取密集区的空闲站点
6. **SetSiteEmptyBp**：设置站点为空
7. **SetSiteFilledBp**：设置站点为已填充
8. **SetSiteLockedBp**：锁定站点
9. **SetSiteUnlockedBp**：解锁站点
10. **CSelectAgvBp**：选择AGV执行任务
11. **CAgvOperationBp**：AGV操作（移动、装卸等）
12. **SubTaskBp**：子任务
13. **IfBp**：条件判断
14. **IfElseBp**：条件分支
15. **WhileBp**：循环
16. **BatchSettingSiteBp**：批量设置站点状态
17. **IterateListBp**：列表迭代
18. **CombinedOrderBp**：组合订单
19. **NoticeOperatorByUserBp**：通知操作员
20. **CacheDataBp**：缓存数据
21. **PrintBp**：打印信息
22. **SetTaskVariableBp**：设置任务变量
23. **ScriptVariablesBp**：脚本变量
24. **TaskStateBp**：任务状态
25. **SkipToComponent**：跳转到组件
26. **ScriptBp**：Python脚本任务块，调用在线脚本执行自定义逻辑
27. **ApiCallBp**：接口调用任务块，调用预定义的API接口

### 6.2 任务块组合逻辑

任务块之间可以通过以下方式组合：

1. **序列执行**：一个块执行完后，执行下一个块
2. **条件分支**：通过`IfBp`和`IfElseBp`实现条件判断和分支执行
3. **循环执行**：通过`WhileBp`和`IterateListBp`实现循环和迭代
4. **子任务嵌套**：通过`SubTaskBp`调用其他任务定义
5. **跳转执行**：通过`SkipToComponent`实现跳转到指定组件
6. **脚本执行**：通过`ScriptBp`调用自定义Python脚本，执行复杂逻辑
7. **接口调用**：通过`ApiCallBp`调用预定义的接口，实现外部系统交互

### 6.3 典型任务执行流程示例

#### 示例1：WH到PKG的运输任务
```
1. CurrentTimeStampBp：获取时间戳（用于任务ID）
2. QueryIdleSiteBp：查询起点WH区域的站点状态
3. QueryIdleSiteBp：查询终点PKG区域的站点状态
4. IfElseBp：检查站点状态是否满足要求
5. SetSiteEmptyBp：将起点站点标记为空
6. SetSiteFilledBp：将终点站点标记为已填充
7. TaskStateBp：更新任务状态描述
8. CSelectAgvBp：选择合适的AGV执行运输
9. 完成任务
```

#### 示例2：高密度库区物料取出任务
```
1. GetIdleCrowdedSiteBp：从密集区获取有物料的站点
2. SetSiteLockedBp：锁定终点站点
3. CSelectAgvBp：选择合适的AGV
   a. CAgvOperationBp：AGV前往前置点
   b. GetIdleCrowdedSiteBp：获取实际的起点站点
   c. CAgvOperationBp：AGV前往起点站点
   d. SetSiteEmptyBp：将起点站点标记为空
   e. SetSiteUnlockedBp：解锁起点站点
   f. CAgvOperationBp：AGV前往终点站点
   g. SetSiteUnlockedBp：解锁终点站点
```

#### 示例3：使用自定义脚本的任务流程
```
1. ScriptBp：调用自定义Python脚本，执行数据分析或复杂业务逻辑
   a. 输入参数：从任务输入或前序任务块获取
   b. 脚本执行：调用t_wind_script表中的Python脚本
   c. 输出结果：返回处理结果给任务流程
2. IfElseBp：根据脚本返回结果判断后续流程
3. 根据条件执行不同分支
```

#### 示例4：使用接口调用的任务流程
```
1. ApiCallBp：调用预定义的外部系统接口
   a. 准备请求参数：从任务变量或前序任务块获取参数
   b. 接口执行：调用t_interfacedefhistory表中定义的接口
   c. 响应处理：将接口返回的结果映射到任务变量
2. IfElseBp：根据接口返回结果判断后续处理逻辑
3. SubTaskBp：根据需要触发后续子任务
```

#### 示例5：使用Modbus通信的任务流程
```
1. ModbusBp：与PLC设备进行Modbus通信
   a. 配置获取：从t_modbus_config表获取通信参数(IP, 端口, 从站ID等)
   b. 读取操作：读取指定地址类型和地址编号的数据
   c. 数据处理：将读取到的数据与目标值比较
2. IfElseBp：根据Modbus返回值判断后续处理逻辑
   a. 如返回值=1（料道有物料）：
      i. CSelectAgvBp：选择合适的AGV
      ii. CAgvOperationBp：AGV前往料道位置取料
      iii. TaskStateBp：更新任务状态为"取料完成"
   b. 如返回值=0（料道无物料）：
      i. TaskStateBp：更新任务状态为"等待物料"
      ii. PrintBp：记录日志"料道暂无物料"
3. ScriptBp：调用Python脚本，更新状态到其他系统
```

## 7. 系统特点与设计理念

1. **模块化设计**：
   - 任务被分解为多个可重用的任务块
   - 通过组合不同的任务块可以定义复杂的任务流程
   - 便于扩展和定制化

2. **灵活性**：
   - 支持多种任务模板适应不同场景
   - 任务定义中的JSON配置允许高度定制化
   - 用户可以自定义任务流程
   - 通过在线Python脚本扩展系统功能

3. **层次结构**：
   - 支持任务嵌套（主任务和子任务）
   - 任务块之间可以建立依赖关系
   - 支持复杂的业务流程编排

4. **状态管理**：
   - 详细记录任务和任务块的执行状态
   - 支持任务恢复和错误处理
   - 提供完整的执行历史记录

5. **资源协调**：
   - 通过锁定/解锁站点来避免资源冲突
   - AGV选择机制确保任务分配给合适的设备
   - 支持多AGV协同工作

6. **可编程性**：
   - 通过在线Python脚本模块，允许用户编写自定义业务逻辑
   - 无需修改系统代码即可扩展系统功能
   - 支持复杂业务场景的快速实现

7. **外部设备集成**：
   - 通过Modbus配置表，支持与PLC等工业控制设备的通信
   - 可监控生产线信号状态，触发相应任务
   - 实现生产自动化与物流自动化的无缝衔接

## 8. 在线脚本和接口与任务系统的关系

### 8.1 集成机制

1. **脚本集成**：
   - 在任务定义中使用ScriptBp类型任务块
   - 在`t_windtaskdef`表的`detail`字段配置脚本关联信息
   - 脚本执行时会记录在`t_wind_script_log`表，记录与脚本关联但不与任务块执行记录直接关联

2. **接口集成**：
   - 在任务定义中使用ApiCallBp类型任务块
   - 在`t_windtaskdef`表的`detail`字段引用`t_interfacedefhistory`中定义的接口
   - 接口定义表仅与任务定义表关联，用于任务设计阶段

3. **Modbus集成**：
   - 在任务定义中使用ModbusBp类型任务块
   - 任务块引用`t_modbus_config`表中的配置参数
   - 支持PLC信号状态的读取和写入操作
   - 可基于PLC信号状态触发任务或更新系统状态

### 8.2 应用场景

1. **脚本应用场景**：
   - 复杂业务逻辑处理
   - 系统集成与数据交互
   - 数据分析和报告生成
   - 动态业务规则执行

2. **接口应用场景**：
   - 外部系统集成(ERP、WMS等)
   - 数据交换和同步
   - 远程控制与指令发送
   - 消息通知和事件触发

3. **Modbus应用场景**：
   - 生产线料道信号监控
   - PLC控制器数据交换
   - 设备状态采集与监控
   - 自动化生产线与AGV系统联动
   - 区域热处理等工艺流程的自动控制

通过脚本、接口和Modbus模块，天风任务系统获得了更高的灵活性和扩展性，能够快速适应不同客户和场景的需求变化，同时能够无缝集成到现有的企业IT生态系统和工业自动化系统中。