┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 数据输入层 │────>│ 规则匹配层 │────>│ 规则执行层 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
↑ ↑ │
│ │ ↓
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 数据缓存层 │<────│ 状态管理层 │<────│ 动作执行层 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
↑ ↑ │
│ │ ↓
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 错误处理层 │────>│ 日志记录层 │<────│ 工作流层 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 设备数据 │────>│ 数据管道 │────>│ 数据处理 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据缓存 │<────│ 缓存更新 │<────│ 数据分发 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据源索引 │────>│ 规则查找 │────>│ 规则过滤 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 优先级排序 │<────│ 规则验证 │<────│ 时间间隔检查│
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 环境准备 │────>│ 规则类型判断│────>│ 表达式计算 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 状态检查 │<────│ 条件评估 │<────│ 窗口计算 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 动作类型判断│────>│ 频率限制检查│────>│ 动作执行 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 错误处理 │<────│ 结果记录 │<────│ 动作参数处理│
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 序列执行 │────>│ 延迟执行 │────>│ 条件检查 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 回退处理 │<────│ 状态更新 │<────│ 结果验证 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 条件评估 │────>│ 状态检查 │────>│ 动作触发 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 表达式计算 │────>│ 结果生成 │────>│ 动作触发 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据收集 │────>│ 聚合计算 │────>│ 条件评估 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 动作触发 │<────│ 结果生成 │<────│ 窗口管理 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 条件评估 │────>│ 状态计时 │────>│ 计数检查 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 动作触发 │<────│ 状态更新 │<────│ 持续时间检查│
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 目标解析 │────>│ 表达式计算 │────>│ 位操作处理 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 设备写入 │<────│ 值计算 │<────│ 模板解析 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 配置解析 │────>│ 消息生成 │────>│ 策略选择 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ MQTT发布 │<────│ 主题解析 │<────│ 模板解析 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 配置解析 │────>│ 请求生成 │────>│ 策略选择 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ HTTP请求 │<────│ URL解析 │<────│ 模板解析 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 配置解析 │────>│ 数据准备 │────>│ 存储执行 │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 序列执行 │────>│ 延迟执行 │────>│ 条件检查 │
└─────────────┘ └─────────────┘ └─────────────┘
│
↓
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 回退处理 │<────│ 结果验证 │<────│ 状态更新 │
└─────────────┘ └─────────────┘ └─────────────┘