技术交流

学习资料

立即试用 商务报价
社区版
社区版 专业版 云服务 Edge Edge PE 网关 授权服务 Trendz分析 Mobile 应用程序 Mobile PE应用程序
文档 > 规则引擎 > 规则节点 > Enrichment节点
入门
指南 安装 架构 API 常见问题

本页目录

Enrichment

Enrichment节点用于更新入站消息的元数据。

增量计算
支持TB版本3.2.2

image

根据上一个时序数据和当前数据计算“delta”并添加到消息中增量计算在消息发起方的范围内完成例如设备、资产或客户。
适用于智能计量用比如当水计量装置每天报告一次计数的绝对值时计算出当天的用量需要将前一天的值与当天的值进行比较。

增量计算在消息发起方的范围内完成例如设备、资产或客户。

配置参数:

  • 输入key(默认’pulseCounter’) - 指定将用于计算增量的键。
  • 输出值键(默认’delta’) - 指定将在消息中存储增量值的键。
  • 小数 - 增量计算的精度
  • 缓存最新值(默认’enabled’) - 启用内存中最新值的缓存。
  • 增量负数则’Failure’ (默认’enabled’) - 如果增量值为负数,则强制消息处理失败。
  • 差值(默认’disabled’) - 添加当前消息和上一条消息之间的差值。

规则节点关系:

规则节点生成具有以下关系的消息:

  • Success - 如果入站消息中存在配置的键则通过;
  • Other - 如果入站消息中不存在配置的键则通过;
  • Failure - 如果设置“告诉’失败’是否为负”,并且增量计算返回负值;

通过示例回顾规则节点的行为假设以下配置:

image

假设下一条消息由同一设备发起,并按列出的顺序到达规则节点:

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

image

此节点查找消息发起者实体的客户并将客户属性或最新遥测数据添加到消息元数据中。

管理员可以配置原始属性名称和元数据属性名称之间的映射关系。

如果选中节点的Latest Telemetry配置复选框则节点将通过配置密钥获取最新遥测,否则将获取服务端作用域的相关属性。

image

出站消息元数据将包含已配置的属性。

可以通过’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

image

此节点查找消息发起者实体的相关设备并将属性(client\shared\server)和最新的遥测值添加到消息元数据中。

元数据中的属性前缀

  • shared属性 -> shared_
  • client属性 -> cs_
  • server属性 -> ss_
  • telemetry -> 无前缀

例如shared属性版本将以名称”shared_version”添加到元数据中。

client属性使用”cs_“前缀。

server属性使用”ss_“前缀。

最新遥测数据不带前缀添加到消息元数据中。

在”Device relations query”配置中管理员可以选择所需的Directionrelation depth level;还可以使用所需的Device types配置Relation type

image

如果找到多个相关实体则仅第一个实体用于属性Enrichment节点其他实体将被丢弃。

如果未找到相关实体则使用Failure链否则是Success链。

如果找不到属性或遥测则不会将其添加到消息元数据中并且仍会通过Success链进行路由。

出站消息元数据将仅包含配置的属性。

可以通过’metadata.temperature‘模板获取其它节点属性。

注意: 从TB版本2.3.1开始如果出站消息中至少一个选定的密钥,则规则节点可以启用/禁用报告Failure

image

发起者属性
支持TB版本2.0

image

在消息元数据中添加消息发起者属性(client\shared\server)和最新的遥测值。

元数据中的属性前缀

  • shared属性 -> shared_
  • client属性 -> cs_
  • server属性 -> ss_
  • telemetry -> 无前缀

例如shared属性版本将以名称”shared_version”添加到元数据中。

client属性使用”cs_“前缀。

server属性使用”ss_“前缀。

最新遥测数据不带前缀添加到消息元数据中。

image

出站消息元数据将仅包含配置的属性。

可以通过’>metadata.cs_temperature‘模板获取其它节点属性。

Note: 从TB版本2.3.1开始如果出站消息中至少一个选定的密钥则规则节点可以启用/禁用报告Failure

image

在下一面教程中你可以看到使用该节点的真实示例:

发起者字段
支持TB版本2.0.1

image

此节点获取消息发起者实体的字段值并将其添加到消息元数据中。

管理员可以配置字段名称和元数据属性名称之间的映射关系。

如果指定的字段不是消息发起者实体字段的一部分它将被忽略。

image

允许以下消息发起者类型: Tenant, Customer, User, Asset, Device, Alarm, Rule Chain

如果发现不支持的发起者类型则使用Failure链否则使用Success链。

如果没有找到字段值则不会将其添加到消息元数据中而是通过成功链进行路由。

出站消息元数据将只包含已配置的属性。

可以通过’metadata.devType‘模板获取其它节点属性。

关系属性
支持TB版本2.0

image

节点查找消息发起者实体的相关实体并将属性或最新遥测数据添加到消息元数据中。

管理员可以配置原始属性名称和元数据属性名称之间的映射关系。

在”Relations query”配置中管理员可以选择所需的Directionrelation depth level

还可以使用必需的关系类型和实体类型配置Relation filters

如果选中节点的Latest Telemetry配置复选框则节点将通过配置密钥获取最新遥测,否则将获取服务端作用域的相关属性。

image

如果找到多个相关实体只使用第一个实体Enrichment属性的其他实体则被丢弃。

如果未找到相关实体则使用Failure链否则使用Success链。

出站邮件元数据将包含已配置的属性

可以通过’>metadata.tempo‘模板获取其它节点属性。

在下一面教程中你可以看到使用该节点的真实示例:

租户属性
支持TB版本2.0

image

此节点查找消息发起者实体的租户并将租户属性或最新遥测值添加到消息元数据中。

管理员可以配置原始属性名称和元数据属性名称之间的映射关系。

选中Latest Telemetry复选框则节点将获取已配置密钥的最新遥测否则使用Node将获取服务器作用域属性.

image

出站消息元数据将包含已配置的属性。

可以通过’>metadata.tempo‘模板获取其它节点属性。

允许以下消息发起者类型: Tenant,Customer,User,Asset,Device,Alarm,Rule Chain

如果找到了不支持的原始发起者类型则会引发错误。

如果发起者尚未分配租户实体则使用Failure链否则Success链。

发起者遥测
支持TB版本2.1.1

image

将在节点配置中选择的特定时间范围内的消息发起者遥测数据添加到消息元数据中。

image

遥测数据添加到不带前缀的消息元数据中。

规则节点具有三种获取模式:

  • FIRST: 从数据库中检索最接近时间范围开始的遥测

  • LAST: 从最接近时间范围末尾的数据库中检索遥测

  • ALL: 在指定时间范围内从数据库检索所有遥测.

image

如果选择获取模式FIRSTLAST则出站消息元数据将包含JSON元素(key/value)否则选定的获取模式ALL则遥测将作为数组获取。

注意:

规则节点可以将记录的限制大小提取到数组中:1000个记录

该数组将包含带有时间戳和值的JSON对象。

注意:

间隔的结尾必须始终小于间隔的开头

如果选中Use metadata interval patterns复选框则规则节点将使用元数据中的Start Interval和End Interval模式。

自UNIX时代(January 1, 1970 00:00:00 UTC)以来,模式单位以毫秒为单位设置。

image

  • 如果消息元数据中不存在任何模式则出站消息将通过failure链进行路由。

  • 如果任何模式的数据类型无效则出站消息还将通过failure链进行路由。

出站消息元数据将包含已配置的遥测字段(如果存在且属于所选范围)。

如果找不到属性或遥测则不会将其添加到消息元数据中并且仍会通过Success链进行路由。

可以通过’JSON.parse(metadata.temperature)‘模板获取其它节点遥测。

注意: 从TB 2.3版开始当选择Fetch mode: ALL时规则节点可以选择遥测采样顺序。

image

在下一面教程中你可以看到使用该节点的真实示例:

租户详细信息
支持TB版本2.3.1

image

此节点将字段从租户详细信息添加到消息正文或元数据

选中Add selected details to the message metadata复选框则现有字段将添加到消息元数据中而不是消息数据中。

image

选定的详细信息将添加到带有前缀:tenant_元数据中。

出站消息将包含已配置的详细信息。

可以通过以下模板获取其他节点的详细信息:

  • metadata.tenant_address

  • msg.tenant_address

如果发起者尚未分配租户实体则使用Failure链否则Success链。

客户详细信息
支持TB版本2.3.1

image

规则节点将客户详细信息中的字段添加到消息正文或元数据。

选中Add selected details to the message metadata复选框则现有字段将添加到消息元数据中而不是消息数据中。

image

选定的详细信息将添加到带有前缀:customer_元数据中。

出站邮件将包含已配置的详细信息(如果存在)。

可以通过以下模板获取其他节点的详细信息:

  • metadata.customer_email

  • msg.customer_email

允许以下消息发起者类型: Asset,Device,Entity View

如果找到了不支持的原始发件人类型则会引发错误。

如果未分配发起者客户实体Failure链则使用Success链。