Engine / 03

规则与事件

用 Connector Resource 隔离连接配置,用 DAG 描述数据从采集到输出的全过程。

一条典型规则

Data flow
Connector Resource: cnc107-s7
        ↓ bind
Source: source-s7
        ↓ Event
Processor: detect-change
        ↓ changed Event
Sink: sink-mqtt → v1/gateway/cnc/telemetry

规则节点只引用 Connector Resource,不复制主机、端口或凭证。资源配置变更有独立生命周期,并能进行引用检查。

事件结构

JSON
{
  "id": "event-id",
  "timestamp": "2026-10-26T10:00:00Z",
  "payload": {
    "device_code": "cnc107",
    "data": { "total_output": 1201 },
    "time": 1792980000000
  },
  "metadata": { "trace_id": "..." }
}

payload 应使用 JSON 兼容类型。运行时调度信息不放入业务 metadata;引擎在分支调度和插件边界克隆事件,避免并发共享可变 map。

编排步骤

  1. 安装并启用所需插件。
  2. 为设备或服务创建 Connector Resource。
  3. 添加 Source、Processor 与 Sink,并配置有向边。
  4. 校验、保存并发布不可变规则版本。
  5. 部署该版本,观察运行态指标和节点错误。

分支与失败

一个节点可连接多个下游。每个调度任务持有独立 Event;任一分支修改 Payload 或 Metadata 不会污染其他分支。节点失败写入运行态错误与指标,不能依赖 panic recovery 处理 Go 并发 map fatal error。