# 概述
当设备基于G+link进行通信时,我们可以在规则引擎中编写查询语句对设备数据进行数据转换处理,并配置转发条件将处理后的数据过滤并转发到其他设备或服务。
例如:
将数据转发到另一个设备,以实现设备与设备的M2M通信控制
将数据转发到时序数据库TSDB中进行存储,以便业务应用查询和使用设备历史数据
将数据转发到用户Kafka服务中,然后使用实时计算进行处理、使用大数据工具进行大规模离线计算,或是不同的业务应用实现高可靠消费数据
# 创建规则
- 在实例详情页面的左侧导航栏,选择 数据流转 > 规则引擎 菜单,进入规则列表页面。
- 点击 创建规则 按钮,在弹窗中填写配置信息:
参数 | 描述 |
---|---|
名称 | 必填,租户下唯一。2~32字符,可为汉字、大小写英文、数字、中线、下划线及括号,不可使用其他特殊字符 |
描述 | 可选,0~128任意字符 |
- 填写配置信息后单击 确定,页面提示 规则创建成功 ,完成创建。规则列表会显示出新创建的规则。
# 调试规则
规则在经过配置并启用后才会开始处理数据,本章仅说明操作步骤,具体规则的 过滤条件、查询条件 语法语句请参考 开发者指南 > 消息通信 > 规则引擎 章节。
规则创建完成后,需要进行配置才能实时接收并处理设备消息。点击 编辑调试 按钮,进入编辑调试页面。
# 设置数据来源
点击 选择数据来源 选择当前规则需要处理的设备消息。支持以下几种方式指定:
- 全部产品的全部设备
- 指定产品下的全部设备
- 指定产品下的指定设备
# 设置数据目的地
数据目的地是指用于接收规则处理消息结果的服务,指明规则消息处理结果的发往哪些服务。
发送到另一个设备:可以实现设备联动控制以及业务服务器端接收设备消息的场景
时序数据库TSDB:将设备消息存储写入到TSDB中,业务应用可以查询TSDB获取设备的历史数据
用户KAFKA:将设备消息转发到用户Kafka中,业务应用可以实时获取设备消息进行流式计算、实时统计等
用户HTTP: 将设备消息转发给自有HTTP服务中,服务接收消息后进行处理。
- 点击 添加目的地 按钮,在弹窗中选择数据目的地类型并填写目的地配置信息。完成配置后,单击 确定,保存数据目的地配置信息。单个规则最多支持添加10个配置不同的目的地。(注:目的地类型相同时配置信息不能完全相同)
- 各类型数据目的地配置说明:
目的地类型 | 配置项 | 说明 |
发送到另一台设备 | 消息类型 | 必选,控制消息的类型 |
接口类 | 必选,接收消息的G+link协议接口 | |
产品 | 必选,接收消息设备所属的产品 | |
设备 | 必选,接收消息设备 | |
时序数据库TSDB | 区域 | 必选,时序数据库TSDB实例所在的区域 私有化部署情况下不需要选择区域 |
数据库名称 | 必选,需要将数据存储到的TSDB实例 如下拉列表中无可选项,请检查在上一项中所选区域下是否已创建TSDB实例,如已创建可点击右侧”刷新“按钮进行刷新;如未创建可点击”创建时序数据库“按钮,跳转到时序数据库控制台进行创建 注:数据写入TSDB是要求必须符合TSDB的写入格式要求,详细规范请参阅 数据目的地>存储到时序数据库 章节 | |
用户KAFKA | 存储主题 | 必选,写入消息的自定义kafka主题 存储主题需要在目的地管理中添加后才能在此处进行选择,数目目的地管理使用说明详见《数据目的地管理》章节 |
指定key | 可选,可指定规则输出结果中的JSON对象最外层的一个key作为写入Kafka的key值 | |
用户HTTP | 服务与名称 | 必选,写入用户HTTP地址名称 |
特别注意: 消息写入目的地时,写入性能受目的地服务限制,当写入速率超过目的地云产品性能限制时,可能触发目的地产品限制导致写入失败,写入失败的消息将被丢弃。请务必确保经过规则过滤每秒写入目的地产品的TPS和吞吐在目的地服务承载范围之内。
# 配置数据筛选
数据筛选是规则对设备消息进行过滤和转换的配置信息,定义符合何种条件的数据转化为何种格式后转发到最终的数据目的地。支持使用查询语法编写过滤条件和查询语句,语法和函数支持详见《数据查询语法和函数》章节。
# 测试输入
输入规则待处理消息的示例,一般以设备实际上报数据格式一致。当测试输入有内容时,后续过滤条件、查询语句发生变化时,结果预览 处将实时显示查询结果。
示例:
{
"reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",
"timestamp":1627893821,
"deviceName":"device001",
"productName":"product001",
"properties":{
"temperature":35,
"humidity":22
},
"other":{
"Misc":null
}
}
# 过滤条件
设置消息转发的条件,支持从原始消息中直接选择变量或使用查询语法构建布尔表达式。
示例:properties.temperature>20 and properties.humidity<30 含义:过滤原始消息中的 properties下 temperature 值大于 20 且 humidity 小于 30 的消息,转发到规则的数据目的地
示例:
properties.temperature>20 and properties.humidity<30
特别注意:
- 只有符合过滤条件的数据才会向下进入数据查询(格式转换)环节,过滤条件为空或返回结果为true时视为数据符合条件,返回结果为false时,消息将被过滤掉。
- 当过滤条件有输入时,匹配结果 会实时显示表达式的返回结果。
# 查询语句
通过查询语句可以将符合过滤条件的数据转换为期望的目标格式。
示例:
{
"device":{
"product":productName,
"device":deviceName
},
"time":timestamp
}
操作技巧: 编写查询语句时,可以复制一条与目标格式一致的消息到 查询语句 输入框内,之后将value替换为查询表达式。
执行上述配置后得到的结果:
{
"device":{
"product":"product001",
"device":"device001"
},
"time":1627893821
}
特别注意:
- 当查询语句为空时,规则默认执行透传操作,即消息会原文转发到数据目的地。
- 当查询语句为 $ 时同样表示透传,但只对JSON格式数据有效,非JSON格式消息会被视为错误格式,不被查询语句处理而丢弃。
# 数据查询模板
数据查询模板是针对常用复杂数据格式转换场景提供的查询语句模板。当前主要对数据写入TSDB格式转换提供了面向不同源数据格式的数据格式转换模板,通过点击 数据查询模板 按钮,选择与你的数据源格式相符的模板,快速复制查询语句到输入框,之后可以针对实际的消息示例,修改数据模板,最终得到目标格式。
# 保存配置
填写完配置信息,点击 保存 按钮返回 规则列表,在对应规则点击 启用 ,页面提示 操作成功,规则开始运行,此时可在目的地产品中查看数据,验证是否符合预期。
# 查看规则
# 查看详情
查看规则基本信息,可以对规则基本信息、配置信息等操作。
- 在“规则列表”页面,点击 规则名称 ,进入规则详情页页面。
- 点击页面右上方的 编辑调试 按钮,可快速进入规则编辑页进行配置修改。
# 启用规则
当规则处于非“运行中”状态时,在 规则列表 页面点击规则右侧 启用 ,可启用规则。
启动成功或失败时均会有相应提示,如启用失败,请进入编辑调试页面检查规则的配置信息是否有错误。
注意:规则在启用状态时才会处理数据,禁用状态下不会接收和处理设备数据。
# 禁用规则
- 当规则处于“运行中”状态时,在 规则列表 页面点击规则右侧 禁用 ,可禁用规则。
- 禁用成功或失败时均会有相应提示,如禁用失败,请尝试刷新页面,查看规则状态。
- 规则被禁用后会立即停止接收、处理、转发消息。
# 删除规则
勾选需要删除的规则,点击 删除 按钮,点击 确定 删除选中的规则。规则只有在禁用状态下才可以被删除。