概述

规则引擎是物联网产品体系中的路由器,负责将IOT消息转发到各种其他产品中去。同时,可以通过SQL语法,对消息进行过滤和变换。数据的输入可以来自物接入、或者Rest API。

对于每一条输入消息,规则引擎可以将消息转发到一个或者多个目的地中去。目的地的种类有三种,存储,计算和通知。

存储:

  • 时序数据库(TSDB):适用于大量时序相关的设备数据写入读取,可以支持较高的读写并发
  • 关系型数据库(RDS):适用于读写并发不大,数据量不大,有一定结构化查询的需求的应用场景
  • 百度对象存储(BOS):适用于一些非结构化数据,文件,图片等的存储
  • 规则字典:适用于需要参与规则引擎计算的非结构化数据(KV),如统计数据、分组信息、重复上传的静态信息等

计算:

  • 函数计算(CFC):适用于对数据有特殊计算需求的应用场景
  • 规则引擎:适用于需要多个规则引擎串联才能完成的计算场景

消息队列和通知:

  • 物接入(IoT Hub):重新写回物接入,主要实现设备联动,设备控制以及影子更新
  • 百度消息服务(Kafka):适用于需要将设备的消息数据传输至客户自己服务或者其它第三方服务
  • 短信(SMS):适用于一些重要的报警需要实时通知给相应的负责人

re1.png

一条规则的执行过程分为如下三个步骤:

  1. 输入消息是否符合约束条件,即WHERE子句部分;如果为否,结束执行,否则继续;
  2. 根据查询条件中的语句,即SELECT子句,对消息进行变换;
  3. 将变换后的消息转发到各目的地中去。

消息格式

如果需要对消息进行过滤和变换,那么消息必须为JSON格式。即,对于非JSON格式的输入消息,规则的约束条件必须为空,查询字段必须为*,即完整的SQL为:

select * where