Enrichment节点用于更新入站消息的元数据。
增量计算
支持TB版本3.2.2 |
根据上一个时序数据和当前数据计算“delta”并添加到消息中增量计算在消息发起方的范围内完成例如设备、资产或客户。
适用于智能计量用比如当水计量装置每天报告一次计数的绝对值时计算出当天的用量需要将前一天的值与当天的值进行比较。
增量计算在消息发起方的范围内完成例如设备、资产或客户。
配置参数:
- 输入key(默认’pulseCounter’) - 指定将用于计算增量的键。
- 输出值键(默认’delta’) - 指定将在消息中存储增量值的键。
- 小数 - 增量计算的精度
- 缓存最新值(默认’enabled’) - 启用内存中最新值的缓存。
- 增量负数则’Failure’ (默认’enabled’) - 如果增量值为负数,则强制消息处理失败。
- 差值(默认’disabled’) - 添加当前消息和上一条消息之间的差值。
规则节点关系:
规则节点生成具有以下关系的消息:
- Success - 如果入站消息中存在配置的键则通过;
- Other - 如果入站消息中不存在配置的键则通过;
- Failure - 如果设置“告诉’失败’是否为负”,并且增量计算返回负值;
通过示例回顾规则节点的行为假设以下配置:
假设下一条消息由同一设备发起,并按列出的顺序到达规则节点:
1
2
3
4
msg: {"pulseCounter": 42}, metadata: {"ts": "1616510425000"}
msg: {"pulseCounter": 73}, metadata: {"ts": "1616510485000"}
msg: {"temperature": 22}, metadata: {"ts": "1616510486000"}
msg: {"pulseCounter": 42}, metadata: {"ts": "1616510487000"}
输出将如下所示:
1
2
3
4
msg: {"pulseCounter": 42, "delta": 0, "periodInMs": 0}, metadata: {"ts": "1616510425000"}, relation: Success
msg: {"pulseCounter": 73, "delta": 31, "periodInMs": 60000}, metadata: {"ts": "1616510485000"}, relation: Success
msg: {"temperature": 22}, metadata: {"ts": "1616510486000"}, relation: Other
msg: {"pulseCounter": 42}, metadata: {"ts": "1616510487000"}, relation: Failure
用户属性
支持TB版本2.0 |
此节点查找消息发起者实体的客户并将客户属性或最新遥测数据添加到消息元数据中。
管理员可以配置原始属性名称和元数据属性名称之间的映射关系。
如果选中节点的Latest Telemetry配置复选框则节点将通过配置密钥获取最新遥测,否则将获取服务端作用域的相关属性。
出站消息元数据将包含已配置的属性。
可以通过’metadata.temperature
‘模板获取其它节点属性。
允许以下消息发起者类型: Customer,User,Asset,Device。
如果找到不支持的原始发起者类型则会引发错误。
如果没有对发起者分配客户实体则使用Failure链否则使用Success链。
注意:从TB版本3.3.3开始可以使用${metadataKey}
获取元数据、$$[messageKey]
获取消息数据。
例如: 有以下元数据{"country": "England"}
, {"England": "London"}
表示国家和地区名称。
目的是从元数据中获取国家/地区并使用“city” 将结果添加到元数据中,因为可以将${country}
做为源属性而”city”作为目标属性。
结果则是{"city": "London"}
。
在下一面教程中你可以看到使用该节点的真实示例:
设备属性
支持TB版本2.0 |
此节点查找消息发起者实体的相关设备并将属性(client\shared\server)和最新的遥测值添加到消息元数据中。
元数据中的属性前缀
- shared属性 ->
shared_
- client属性 ->
cs_
- server属性 ->
ss_
- telemetry -> 无前缀
例如shared属性版本将以名称”shared_version”添加到元数据中。
client属性使用”cs_“前缀。
server属性使用”ss_“前缀。
最新遥测数据不带前缀添加到消息元数据中。
在”Device relations query”配置中管理员可以选择所需的Direction和relation depth level;还可以使用所需的Device types配置Relation type。
如果找到多个相关实体则仅第一个实体用于属性Enrichment节点其他实体将被丢弃。
如果未找到相关实体则使用Failure链否则是Success链。
如果找不到属性或遥测则不会将其添加到消息元数据中并且仍会通过Success链进行路由。
出站消息元数据将仅包含配置的属性。
可以通过’metadata.temperature
‘模板获取其它节点属性。
注意: 从TB版本2.3.1开始如果出站消息中至少一个选定的密钥,则规则节点可以启用/禁用报告Failure。
发起者属性
支持TB版本2.0 |
在消息元数据中添加消息发起者属性(client\shared\server)和最新的遥测值。
元数据中的属性前缀
- shared属性 ->
shared_
- client属性 ->
cs_
- server属性 ->
ss_
- telemetry -> 无前缀
例如shared属性版本将以名称”shared_version”添加到元数据中。
client属性使用”cs_“前缀。
server属性使用”ss_“前缀。
最新遥测数据不带前缀添加到消息元数据中。
出站消息元数据将仅包含配置的属性。
可以通过’>metadata.cs_temperature
‘模板获取其它节点属性。
Note: 从TB版本2.3.1开始如果出站消息中至少一个选定的密钥则规则节点可以启用/禁用报告Failure
在下一面教程中你可以看到使用该节点的真实示例:
发起者字段
支持TB版本2.0.1 |
此节点获取消息发起者实体的字段值并将其添加到消息元数据中。
管理员可以配置字段名称和元数据属性名称之间的映射关系。
如果指定的字段不是消息发起者实体字段的一部分它将被忽略。
允许以下消息发起者类型: Tenant, Customer, User, Asset, Device, Alarm, Rule Chain。
如果发现不支持的发起者类型则使用Failure链否则使用Success链。
如果没有找到字段值则不会将其添加到消息元数据中而是通过成功链进行路由。
出站消息元数据将只包含已配置的属性。
可以通过’metadata.devType
‘模板获取其它节点属性。
关系属性
支持TB版本2.0 |
节点查找消息发起者实体的相关实体并将属性或最新遥测数据添加到消息元数据中。
管理员可以配置原始属性名称和元数据属性名称之间的映射关系。
在”Relations query”配置中管理员可以选择所需的Direction和relation depth level。
还可以使用必需的关系类型和实体类型配置Relation filters。
如果选中节点的Latest Telemetry配置复选框则节点将通过配置密钥获取最新遥测,否则将获取服务端作用域的相关属性。
如果找到多个相关实体只使用第一个实体Enrichment属性的其他实体则被丢弃。
如果未找到相关实体则使用Failure链否则使用Success链。
出站邮件元数据将包含已配置的属性
可以通过’>metadata.tempo
‘模板获取其它节点属性。
在下一面教程中你可以看到使用该节点的真实示例:
租户属性
支持TB版本2.0 |
此节点查找消息发起者实体的租户并将租户属性或最新遥测值添加到消息元数据中。
管理员可以配置原始属性名称和元数据属性名称之间的映射关系。
选中Latest Telemetry复选框则节点将获取已配置密钥的最新遥测否则使用Node将获取服务器作用域属性.
出站消息元数据将包含已配置的属性。
可以通过’>metadata.tempo
‘模板获取其它节点属性。
允许以下消息发起者类型: Tenant,Customer,User,Asset,Device,Alarm,Rule Chain。
如果找到了不支持的原始发起者类型则会引发错误。
如果发起者尚未分配租户实体则使用Failure链否则Success链。
发起者遥测
支持TB版本2.1.1 |
将在节点配置中选择的特定时间范围内的消息发起者遥测数据添加到消息元数据中。
遥测数据添加到不带前缀的消息元数据中。
规则节点具有三种获取模式:
-
FIRST: 从数据库中检索最接近时间范围开始的遥测
-
LAST: 从最接近时间范围末尾的数据库中检索遥测
-
ALL: 在指定时间范围内从数据库检索所有遥测.
如果选择获取模式FIRST或LAST则出站消息元数据将包含JSON元素(key/value)否则选定的获取模式ALL则遥测将作为数组获取。
注意: |
规则节点可以将记录的限制大小提取到数组中:1000个记录 |
该数组将包含带有时间戳和值的JSON对象。
注意: |
间隔的结尾必须始终小于间隔的开头 |
如果选中Use metadata interval patterns复选框则规则节点将使用元数据中的Start Interval和End Interval模式。
自UNIX时代(January 1, 1970 00:00:00 UTC)以来,模式单位以毫秒为单位设置。
-
如果消息元数据中不存在任何模式则出站消息将通过failure链进行路由。
-
如果任何模式的数据类型无效则出站消息还将通过failure链进行路由。
出站消息元数据将包含已配置的遥测字段(如果存在且属于所选范围)。
如果找不到属性或遥测则不会将其添加到消息元数据中并且仍会通过Success链进行路由。
可以通过’JSON.parse(metadata.temperature)
‘模板获取其它节点遥测。
注意: 从TB 2.3版开始当选择Fetch mode: ALL时规则节点可以选择遥测采样顺序。
在下一面教程中你可以看到使用该节点的真实示例:
租户详细信息
支持TB版本2.3.1 |
此节点将字段从租户详细信息添加到消息正文或元数据
选中Add selected details to the message metadata复选框则现有字段将添加到消息元数据中而不是消息数据中。
选定的详细信息将添加到带有前缀:tenant_元数据中。
出站消息将包含已配置的详细信息。
可以通过以下模板获取其他节点的详细信息:
-
metadata.tenant_address
-
msg.tenant_address
如果发起者尚未分配租户实体则使用Failure链否则Success链。
客户详细信息
支持TB版本2.3.1 |
规则节点将客户详细信息中的字段添加到消息正文或元数据。
选中Add selected details to the message metadata复选框则现有字段将添加到消息元数据中而不是消息数据中。
选定的详细信息将添加到带有前缀:customer_元数据中。
出站邮件将包含已配置的详细信息(如果存在)。
可以通过以下模板获取其他节点的详细信息:
-
metadata.customer_email
-
msg.customer_email
允许以下消息发起者类型: Asset,Device,Entity View。
如果找到了不支持的原始发件人类型则会引发错误。
如果未分配发起者客户实体Failure链则使用Success链。