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 连接器
概念辨析:“动作”与“连接器”常被混淆。动作是“做什么”(如发送数据),连接器是“通过什么做”(如 HTTP 协议通道)。一个连接器可被多个动作复用。

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 转换、字段映射、格式校验。
  • 逻辑动作:条件判断、循环、分支。
  • 存储动作:写入数据库、缓存、文件系统。
常见误区:不要将触发器与动作混淆。触发器只负责“何时开始”,不处理数据。例如,一个 HTTP 触发器只接收请求并提取数据,真正的协议适配逻辑(如签名验证、参数重组)应放在后续的动作节点中。

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 概念关系图

下图展示了流编排六大概念之间的协作关系:

流编排六大概念协作关系图 触发器 (Trigger) 连接器 (Connector) 节点 (Node) 动作 (Action) 边 (Edge) 数据流 (Data Flow) 启动 协议封装 包含 连接 传递 说明 节点通过边连接形成流图 数据流沿边在节点间传递

2.7 设备接入场景中的概念映射

以“HTTP 设备上报数据并存储”为例,将上述概念映射到实际流编排中:

  1. 触发器:HTTP Webhook 触发器,监听 /api/v1/device/upload 端点。
  2. 连接器:HTTP 连接器,配置 TLS 证书、请求超时 5 秒、支持 JSON 格式。
  3. 节点 1(协议适配):解析 HTTP 请求,提取设备 ID(从 Header)和 Payload(从 Body)。
  4. 节点 2(数据转换):将设备原始数据映射为统一格式,添加时间戳。
  5. 节点 3(存储动作):调用数据库连接器,执行 INSERT 操作。
  6. 边:节点 1 → 节点 2 → 节点 3,顺序执行。
  7. 数据流:每个节点输出包含 Payload 和 Metadata 的对象,传递给下游。
关键理解:在流编排中,“连接器”是基础设施层,“节点”是逻辑处理层,“动作”是具体执行层。三层分离使得协议适配(如 HTTP→MQTT)只需更换连接器,业务逻辑无需重写。

2.8 概念对比:流编排 vs 传统编程

流编排概念 传统编程对应 优势
节点 函数/方法 可视化编排,无需编码
边 函数调用链 条件分支可视化,易于调试
数据流 函数参数/返回值 统一数据模型,减少类型转换
触发器 事件监听/主函数入口 多种触发方式,解耦启动逻辑
动作 函数内部语句 可复用、可组合、可监控
连接器 SDK/第三方库 标准化接口,降低集成成本