2. 流编排基础概念:节点、边、数据流、触发器、动作、连接器
流编排(Flow Orchestration)是设备接入的核心编排范式。它将复杂的协议适配、数据转换与业务逻辑拆解为可视化的“流图”,每个流图由若干基础元素构成。理解这些基础概念,是掌握流编排工具、完成 HTTP API 协议适配的前提。
2.1 核心概念总览
流编排模型借鉴了有向图(Directed Graph)理论,将处理逻辑抽象为以下六类元素:
| 概念 | 符号 | 作用 | 设备接入场景示例 |
|---|---|---|---|
| 节点(Node) | 矩形 | 执行单元,承载具体处理逻辑 | HTTP 请求节点、数据解析节点、MQTT 发布节点 |
| 边(Edge) | 箭头线 | 连接节点,定义执行顺序与数据传递路径 | 从“HTTP 接收”指向“JSON 解析”的连线 |
| 数据流(Data Flow) | 流动线 | 节点间传递的数据载体(Payload + Metadata) | 设备上报的温湿度 JSON 数据包 |
| 触发器(Trigger) | 闪电/圆角 | 流的启动条件,决定何时开始执行 | HTTP Webhook 接收、定时轮询、设备上线事件 |
| 动作(Action) | 齿轮/圆角 | 节点执行的具体操作,是业务逻辑的最小单元 | 发送 HTTP 请求、写入数据库、调用 API |
| 连接器(Connector) | 插头/圆角 | 封装外部系统或协议的标准化接口 | HTTP 连接器、MQTT 连接器、Modbus 连接器 |
2.2 节点与边:流图的基本骨架
节点是流图中的“处理站”。每个节点封装一个独立的处理步骤,例如接收 HTTP 请求、解析 JSON 报文、调用设备影子服务。节点之间通过边连接,形成有向无环图(DAG)或允许特定循环的图结构。
边的核心属性包括:
- 源节点(Source):数据从哪个节点流出。
- 目标节点(Target):数据流入哪个节点。
- 条件表达式(Condition):可选,满足条件时边才生效(如“仅当 status=200 时继续”)。
- 数据映射(Data Mapping):可选,定义源输出字段到目标输入字段的转换规则。
2.3 数据流:节点间的信息载体
数据流是流编排的“血液”。每个节点处理完成后,将结果封装为数据流对象传递给下游节点。数据流通常包含两部分:
| 组成部分 | 说明 | 示例 |
|---|---|---|
| Payload(负载) | 业务数据主体,通常为 JSON、XML 或二进制 | { "temperature": 25.6, "humidity": 68 } |
| Metadata(元数据) | 上下文信息,如时间戳、设备 ID、错误码 | { "deviceId": "sensor-01", "timestamp": 1712563200 } |
在 HTTP API 协议适配场景中,数据流的设计尤为关键。例如,设备通过 HTTP POST 上报数据,流编排工具需将 HTTP 请求体映射为 Payload,将请求头中的设备标识提取为 Metadata,再传递给后续处理节点。
2.4 触发器与动作:流的启动与执行
触发器是流的“启动开关”。没有触发器的流是静态的,不会执行。常见的触发器类型包括:
- Webhook 触发器:外部系统通过 HTTP 请求触发流执行(设备上报最常用)。
- 定时触发器:按 Cron 表达式周期性触发(如每 5 分钟轮询设备状态)。
- 事件触发器:监听系统内部事件(如设备上线、数据到达)。
- 手动触发器:通过 UI 或 API 手动执行流(调试测试用)。
动作是节点内部的具体操作。一个节点可以包含一个或多个动作,动作按顺序或并行执行。动作类型包括:
- 协议动作:发送 HTTP 请求、发布 MQTT 消息、读取 Modbus 寄存器。
- 数据动作:JSON 转换、字段映射、格式校验。
- 逻辑动作:条件判断、循环、分支。
- 存储动作:写入数据库、缓存、文件系统。
2.5 连接器:外部系统的标准化适配层
连接器是流编排工具与外部系统交互的“协议适配器”。它将不同协议(HTTP、MQTT、CoAP、Modbus)的差异封装为统一的接口,使流编排节点无需关心底层通信细节。
一个典型的连接器包含以下要素:
| 要素 | 说明 | HTTP 连接器示例 |
|---|---|---|
| 协议类型 | 底层通信协议 | HTTP/1.1、HTTPS |
| 认证方式 | 身份验证机制 | Basic Auth、Bearer Token、API Key |
| 端点配置 | 目标地址与端口 | https://api.example.com/v1/devices |
| 序列化格式 | 请求/响应数据格式 | JSON、XML、Form-Data |
| 重试策略 | 失败时的重试机制 | 指数退避、固定间隔、不重试 |
在设备接入场景中,连接器的作用尤为突出。例如,一个“HTTP 设备连接器”可以统一处理所有基于 HTTP 协议的设备接入,无论设备使用 GET 还是 POST,无论数据格式是 JSON 还是表单,连接器都会将其标准化为流编排工具内部的数据流格式。
2.6 概念关系图
下图展示了流编排六大概念之间的协作关系:
2.7 设备接入场景中的概念映射
以“HTTP 设备上报数据并存储”为例,将上述概念映射到实际流编排中:
- 触发器:HTTP Webhook 触发器,监听
/api/v1/device/upload端点。 - 连接器:HTTP 连接器,配置 TLS 证书、请求超时 5 秒、支持 JSON 格式。
- 节点 1(协议适配):解析 HTTP 请求,提取设备 ID(从 Header)和 Payload(从 Body)。
- 节点 2(数据转换):将设备原始数据映射为统一格式,添加时间戳。
- 节点 3(存储动作):调用数据库连接器,执行 INSERT 操作。
- 边:节点 1 → 节点 2 → 节点 3,顺序执行。
- 数据流:每个节点输出包含 Payload 和 Metadata 的对象,传递给下游。
2.8 概念对比:流编排 vs 传统编程
| 流编排概念 | 传统编程对应 | 优势 |
|---|---|---|
| 节点 | 函数/方法 | 可视化编排,无需编码 |
| 边 | 函数调用链 | 条件分支可视化,易于调试 |
| 数据流 | 函数参数/返回值 | 统一数据模型,减少类型转换 |
| 触发器 | 事件监听/主函数入口 | 多种触发方式,解耦启动逻辑 |
| 动作 | 函数内部语句 | 可复用、可组合、可监控 |
| 连接器 | SDK/第三方库 | 标准化接口,降低集成成本 |