ruoyi-vue-pro 开发指南 ruoyi-vue-pro 开发指南
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读

    • 简介
    • 交流群
    • 视频教程
    • 功能列表
    • 快速启动(后端项目)
    • 快速启动(前端项目)
    • 接口文档
    • 技术选型
    • 项目结构
    • 代码热加载
    • 一键改包
    • 迁移模块(适合新项目)
    • 删除功能(以租户为例)
    • 表结构变更(版本升级)
    • 国产信创数据库(DM 达梦、大金、OpenGauss)
    • 如何去除 Redis 缓存
    • 内网穿透
    • 面试题、简历模版、简历优化
    • 项目外包
  • 后端手册

    • 新建模块
    • 代码生成【单表】(新增功能)
    • 代码生成【主子表】
    • 代码生成(树表)
    • 代码生成(移动端)
    • 功能权限
    • 数据权限
    • 用户体系
    • 三方登录
    • OAuth 2.0(SSO 单点登录)
    • SaaS 多租户【字段隔离】
    • SaaS 多租户【数据库隔离】
    • WebSocket 实时通信
    • 异常处理(错误码)
    • 参数校验、时间传参
    • 分页实现
    • VO 对象转换、数据翻译
    • 文件存储(上传下载)
    • Excel 导入导出
    • 操作日志、访问日志、异常日志
    • MyBatis 数据库
    • MyBatis 联表&分页查询
    • 多数据源(读写分离)、事务
    • Redis 缓存
    • 本地缓存
    • 异步任务
    • 分布式锁
    • 幂等性(防重复提交)
    • 请求限流(RateLimiter)
    • HTTP 接口签名(防篡改)
    • HTTP 接口加解密
    • 单元测试
    • 验证码
    • 工具类 Util
    • 配置管理
    • 数据库文档
  • 中间件手册

    • 定时任务
    • 消息队列(内存)
    • 消息队列(Redis)
    • 消息队列(RocketMQ)
    • 消息队列(RabbitMQ)
    • 消息队列(Kafka)
    • 限流熔断
  • 工作流手册

    • 工作流演示
    • 功能开启
    • 工作流(达梦适配)
    • 审批接入(流程表单)
    • 审批接入(业务表单)
    • 流程设计器(BPMN)
    • 流程设计器(钉钉、飞书)
    • 选择审批人、发起人自选
    • 会签、或签、依次审批
    • 流程发起、取消、重新发起
    • 审批通过、不通过、驳回
    • 审批加签、减签
    • 审批转办、委派、抄送
    • 执行监听器、任务监听器
    • 流程表达式
    • 流程审批通知
  • 大屏手册

    • 报表设计器
    • 大屏设计器
  • 支付手册

    • 功能开启
    • 支付宝支付接入
    • 微信公众号支付接入
    • 微信小程序支付接入
    • 支付宝、微信退款接入
    • 支付宝转账接入
    • 微信转账接入
    • 钱包充值、支付、退款
    • 模拟支付、退款
  • 会员手册

    • 功能开启
    • 微信公众号登录
    • 微信小程序登录
    • 微信小程序订阅消息
    • 微信小程序码
    • 会员用户、标签、分组
    • 会员等级、积分、签到
  • 商城手册

    • 商城演示
    • 功能开启
    • 商城装修
    • 在线客服
    • 【商品】商品分类
    • 【商品】商品属性
    • 【商品】商品 SPU 与 SKU
    • 【商品】商品评价
    • 【交易】购物车
    • 【交易】交易订单
    • 【交易】售后退款
    • 【交易】快递发货
    • 【交易】门店自提
    • 【交易】分销返佣
    • 【营销】优惠劵
    • 【营销】积分商城
    • 【营销】拼团活动
    • 【营销】秒杀活动
    • 【营销】砍价活动
    • 【营销】满减送活动
    • 【营销】限时折扣
    • 【营销】内容管理
    • 【统计】会员、商品、交易统计
  • ERP手册

    • ERP 演示
    • 功能开启
    • 【产品】产品信息、分类、单位
    • 【库存】产品库存、库存明细
    • 【库存】其它入库、其它出库
    • 【库存】库存调拨、库存盘点
    • 【采购】采购订单、入库、退货
    • 【销售】销售订单、出库、退货
    • 【财务】采购付款、销售收款
  • CRM手册

    • CRM 演示
    • 功能开启
    • 【线索】线索管理
    • 【客户】客户管理、公海客户
    • 【商机】商机管理、商机状态
    • 【合同】合同管理、合同提醒
    • 【回款】回款管理、回款计划
    • 【产品】产品管理、产品分类
    • 【通用】数据权限
    • 【通用】跟进记录、待办事项
  • AI大模型手册

    • AI 大模型演示
    • 功能开启
    • AI 聊天对话
    • AI 绘画创作
    • AI 知识库(RAG)
    • AI 音乐创作
    • AI 写作助手
    • AI 思维导图
    • AI 工具(function calling)
    • AI 工作流
    • Dify 工作流
    • FastGPT 工作流
    • Coze 智能体
    • 推理模式(thinking)
    • 联网搜索
    • MCP Client 客户端
    • MCP Server 服务端
    • 【模型接入】Claude
    • 【模型接入】OpenAI
    • 【模型接入】通义千问
    • 【模型接入】DeepSeek
    • 【模型接入】字节豆包
    • 【模型接入】腾讯混元
    • 【模型接入】硅基流动
    • 【模型接入】MiniMax
    • 【模型接入】月之月面
    • 【模型接入】百川智能
    • 【模型接入】文心一言
    • 【模型接入】LLAMA
    • 【模型接入】智谱 GLM
    • 【模型接入】讯飞星火
    • 【模型接入】微软 OpenAI
    • 【模型接入】谷歌 Gemini
    • 【模型接入】Stable Diffusion
    • 【模型接入】Midjourney
    • 【模型接入】Suno
  • IoT物联网手册

    • 功能开启
    • 产品管理
    • 设备管理
    • 物模型配置
    • 设备网关与子设备
    • 设备动态注册
    • 设备接入(概述)
    • 设备接入(HTTP 协议)
    • 设备接入(MQTT 协议)
    • 设备接入(EMQX 协议)
    • 设备接入(TCP 协议)
    • 设备接入(UDP 协议)
    • 设备接入(WebSocket 协议)
    • 设备接入(CoAP 协议)
    • 设备接入(Modbus Client 模式)
    • 设备接入(Modbus Server 模式)
    • 设备接入(自定义协议)
    • 场景联动
    • 数据流转
      • 1. 数据流转
        • 1.1 数据目的
        • 1.2 数据流转规则
      • 2. 快速上手
        • 2.1 步骤一:创建数据目的
        • 2.2 步骤二:创建数据流转规则
        • 2.3 步骤三:测试验证
      • 3. 实现原理
        • 3.1 整体流程
        • 3.2 Action 执行器
    • 告警配置
    • OTA 固件升级
  • 公众号手册

    • 功能开启
    • 公众号接入
    • 公众号粉丝
    • 公众号标签
    • 公众号消息
    • 模版消息
    • 自动回复
    • 公众号菜单
    • 公众号素材
    • 公众号图文
    • 公众号统计
  • 系统手册

    • 短信配置
    • 邮件配置
    • 站内信配置
    • Webhook(钉钉、飞书、企微)
    • 数据脱敏、字段权限
    • 敏感词
    • 地区 & IP 库
  • 运维手册

    • 开发环境
    • Linux 部署
    • Docker 部署
    • Jenkins 部署
    • 宝塔部署
    • 1Panel 部署
    • HTTPS 证书
    • 服务监控
    • Tomcat WAR 部署
  • 前端手册 Vue 3.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • CRUD 组件
    • 国际化
    • IDE 调试
    • 代码格式化
  • 前端手册 Vben 5.x

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • IDE 调试
    • 代码格式化
  • 前端手册 Vue 2.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
  • 前端手册 Admin Uniapp

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • IDE 调试
    • 代码格式化
    • 运行发布
  • 更新日志

    • 【v2026-02】开发中
    • 【v2026-01】
    • 【v2025-12】
    • 【v2025-11】
    • 【v2025-10】
    • 【v2025-09】
    • 【v2025-08】
    • 【v2-6-1】2025-07-19
    • 【v2-6-0】2025-06-07
    • 【v2.5.0】2025-05-13
    • 【v2.4.2】2025-04-12
    • 【v2.4.1】2025-02-09
    • 【v2.4.0】2024-12-31
    • 【v2.3.0】2024-10-07
    • 【v2.2.0】2024-08-02
    • 【v2.1.0】2024-05-05
    • 【v2.0.1】2024-03-01
    • 【v2.0.0】2024-01-26
  • 开发指南
  • IoT物联网手册
芋道源码
2026-02-12
目录

数据流转

推荐阅读:

  • 《阿里云物联网平台 —— 云产品流转》 (opens new window)

数据流转模块,由 yudao-module-iot 后端模块的 rule/data 包实现。它将设备上行消息,按照规则转发到外部系统(如 HTTP、Kafka、RocketMQ、RabbitMQ、Redis、TCP、WebSocket 等),实现设备数据与业务系统的打通。

它和 《场景联动》 的区别在于:数据流转侧重于"数据推送到外部系统",场景联动侧重于"设备控制和告警"。

# 1. 数据流转

数据流转由两部分组成:数据目的(数据发到哪里去)和数据流转规则(什么数据发到哪些目的)。

表关系

# 1.1 数据目的

数据目的,由 IotDataSinkController 提供接口。它定义了数据的流转方向,即数据要"发到哪里去"。

# 1.1.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `iot_data_sink` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '数据目的编号',
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '数据目的名称',
  `description` varchar(500) DEFAULT NULL COMMENT '数据目的描述',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '数据目的状态',
    
  `type` int NOT NULL COMMENT '数据目的类型',
  `config` text COMMENT '数据目的配置(JSON 格式)',
    
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IoT 数据流转目的表';

① name、description:数据目的的基本信息,用于展示。

② status:状态,参见 CommonStatusEnum 枚举。开启后,数据目的才可被规则使用。

③ type:数据目的类型,参见 IotDataSinkTypeEnum 枚举。每种类型对应不同的配置结构和 Action 执行器,具体见「3.2 Action 执行器」小节。

④ config:配置信息,JSON 格式存储。使用 Jackson 多态序列化(@JsonTypeInfo + @JsonSubTypes),不同 type 对应不同的配置类,具体见「3.2 Action 执行器」小节。

提示:

config JSON 配置结构比较多,建议结合「1.1.2 管理后台」的界面截图一起看,会更容易理解。

# 1.1.2 管理后台

① 对应 [IoT 物联网 -> 规则引擎 -> 数据流转 -> 数据目的] Tab,对应前端项目的 @/views/iot/rule/data/sink 目录。

管理后台 - 数据目的列表

② 点击【新增】按钮,弹出新增数据目的对话框。选择不同的目的类型,会显示不同的配置表单。

管理后台 - 创建 HTTP 数据目的

# 1.2 数据流转规则

数据流转规则,由 IotDataRuleController 提供接口。它定义了"什么数据"流转到"哪些目的",将数据源和数据目的关联起来。

# 1.2.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `iot_data_rule` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '规则编号',
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '规则名称',
  `description` varchar(500) DEFAULT NULL COMMENT '规则描述',
    
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '规则状态',
    
  `source_configs` text COMMENT '数据源配置数组(JSON 格式)',
    
  `sink_ids` varchar(500) DEFAULT NULL COMMENT '数据目的编号数组',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='IoT 数据流转规则表';

① name、description:规则的基本信息。name 在全局唯一,不允许重复。

② status:规则状态,参见 CommonStatusEnum 枚举。只有开启状态的规则,才会在设备上报消息时执行数据流转。

③ source_configs:数据源配置,JSON 格式存储,类型为 List<SourceConfig>。每个 SourceConfig 包含:

  • method:消息方法,参见 IotDeviceMessageMethodEnum 的上行部分(如 thing.property.post 属性上报、thing.event.post 事件上报、thing.state.update 状态变更等)。关于消息方法,详见 《设备接入(概述)》 的「2.2 消息方法」小节
  • productId:产品编号,关联 iot_product 表
  • deviceId:设备编号,关联 iot_device 表。值为 0 时,表示匹配该产品下的全部设备
  • identifier:物模型标识符。可选,为空时匹配该消息方法的所有消息

一条规则可以配置多个数据源,任意一个数据源匹配即触发流转。

④ sink_ids:数据目的编号数组,关联 iot_data_sink 表的 id 字段,使用 LongListTypeHandler 存储为逗号分隔的字符串。一条规则可以关联多个数据目的,匹配后同时向所有目的推送。

# 1.2.2 管理后台

① 对应 [IoT 物联网 -> 规则引擎 -> 数据流转 -> 数据规则] Tab,对应前端项目的 @/views/iot/rule/data/rule 目录。

管理后台 - 数据规则列表

② 点击【新增】按钮,弹出新增规则对话框。

管理后台 - 创建数据规则

数据源配置使用表格形式,每行一条数据源,支持动态添加和删除。选择产品后自动加载设备列表,选择消息方法后自动加载物模型标识符。

# 2. 快速上手

以 《设备接入(HTTP 协议)》 中 id 为 25 的演示设备为例,演示如何将设备属性上报数据流转到 HTTP 接口。

# 2.1 步骤一:创建数据目的

进入 [IoT 物联网 -> 规则引擎 -> 数据流转],切换到 [数据目的] Tab,点击【新增】按钮创建一条 HTTP 类型的数据目的,配置如下:

系统已预设了一条名为"演示 HTTP 数据目的"的演示记录,可直接用于体验,跳过本步骤。

快速上手 - 数据目的示例

  • 类型:HTTP
  • URL:https://httpbin.org/post(一个公共的 HTTP 测试服务)
  • 方法:POST

# 2.2 步骤二:创建数据流转规则

切换到 [数据规则] Tab,点击【新增】按钮创建一条规则,配置如下:

系统已预设了一条名为"演示数据流转规则"的演示记录,可直接用于体验,跳过本步骤。

快速上手 - 数据规则示例

  • 数据目的:选择上一步创建的 HTTP 数据目的
  • 数据源:消息方法 property.post(属性上报)→ 演示产品 → 演示设备(id 为 25)

# 2.3 步骤三:测试验证

【可选】如需调试,可在 IotHttpDataSinkAction 的 #execute(...) 方法打断点,验证 HTTP 请求是否被发送。

① 使用设备管理的"模拟设备"功能,模拟演示设备上报 width 属性值为 1500。

快速上手 - 模拟设备上报属性

② 查看后端日志,可以看到数据流转执行成功。如下是一个日志的例子:

// 日志说明:IotHttpDataSinkAction 发送 HTTP POST 请求到 httpbin.org,携带设备消息(width=1000, height=3000),收到 200 OK 响应
2026-02-13 22:51:26.326 [SimpleAsyncTaskExecutor-2] INFO  c.i.y.m.i.s.rule.data.action.IotHttpDataSinkAction - [execute][message(IotDeviceMessage(id=abcbe301cdd8408c995585997475008c, method=thing.property.post, params={width=1000, height=3000})) url(https://httpbin.org/post) method(POST) 请求成功(<200 OK OK, ...)]

// 日志说明:确认消息成功流转到数据目的(id=13),数据流转执行完成
2026-02-13 22:51:26.327 [SimpleAsyncTaskExecutor-2] INFO  c.i.y.m.i.service.rule.data.IotDataRuleServiceImpl - [executeDataRuleAction][消息(abcbe301cdd8408c995585997475008c) 数据目的(13) 执行成功]

# 3. 实现原理

简要介绍数据流转的后端架构,帮助二次开发的同学理解核心流程。

# 3.1 整体流程

设备上报消息 → IotMessageBus 发布消息
           → IotDataRuleMessageSubscriber 订阅消息
           → IotDataRuleService#executeDataRule() 匹配规则
           → IotDataRuleAction#execute() 执行流转
           → 外部系统(HTTP/Kafka/Redis 等)

IotDataRuleMessageSubscriber 订阅设备消息 Topic iot_device_message,收到消息后调用 IotDataRuleService 的 #executeDataRule(...) 方法。

# 3.2 Action 执行器

每种数据目的类型对应一个 Action 执行器,实现 IotDataRuleAction 接口。

数据目的类型 Action 实现类 配置类 底层技术
HTTP IotHttpDataSinkAction IotDataSinkHttpConfig Spring RestTemplate
TCP IotTcpDataRuleAction IotDataSinkTcpConfig Java Socket
WebSocket IotWebSocketDataRuleAction IotDataSinkWebSocketConfig OkHttp WebSocket
Redis IotRedisRuleAction IotDataSinkRedisConfig Redisson(RedisTemplate),支持 6 种数据结构
Kafka IotKafkaDataRuleAction IotDataSinkKafkaConfig Spring Kafka
RabbitMQ IotRabbitMQDataRuleAction IotDataSinkRabbitMQConfig RabbitMQ Java Client
RocketMQ IotRocketMQDataRuleAction IotDataSinkRocketMQConfig RocketMQ Client

TODO @芋艿:还有部分 db、mqtt 的流转,等待实现。

场景联动
告警配置

← 场景联动 告警配置→

Theme by Vdoing | Copyright © 2019-2026 芋道源码 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×