根据指定的关系查询,将入站消息复制到与消息来源实体相关的所有实体。
配置
节点使用关系查询(Relations query)查找目标实体。
- Direction — 指定要搜索的关系方向,可为 From originator 或 To originator。
- Max relation level — 设置遍历嵌套关系的最大深度(如值为2可找到与来源实体相关的实体,以及与这些实体相关的实体)。
- Fetch last level relation only — 若启用,仅使用在最大指定层级找到的实体。仅在 Max relation level 大于1时适用。
- Relation filters — 用于过滤关系的条件列表。每个过滤器指定:
- Relation type — 要查找的关系类型(如 Contains、Manages)。
- Entity type — 相关实体的可接受实体类型列表(如 Device、Asset)。
JSON Schema
消息处理逻辑
- 节点识别入站消息的来源实体。
- 从来源实体开始执行配置的关系查询,查找所有相关实体。
- 若查询未找到任何匹配的相关实体,处理失败,消息经
Failure路由。 - 对每个找到的相关实体创建一条新消息。该新消息为原始消息的副本,但其来源实体设为该相关实体。
- 所有新消息经
Success链发送。所有副本成功入队后确认原始消息。
输出连接
Success:- 新消息(每个找到的相关实体一条)经此链发送。
Failure:- 关系查询未找到任何实体时。
- 发生其他意外错误时。
示例
示例1 — 复制到相关设备
入站消息
Originator: 资产 Building A
Data: {"command": "setFanSpeed", "value": "HIGH"}
节点配置
1
2
3
4
5
6
7
8
9
10
11
12
{
"relationsQuery": {
"direction": "FROM",
"maxLevel": 1,
"filters": [
{
"relationType": "Contains",
"entityTypes": ["DEVICE"]
}
]
}
}
系统状态
资产 Building A 有两条出站 Contains 关系:一条到 Device HVAC-1,一条到 Device HVAC-2。
出站消息
经 Success 链创建并发送两条新消息:
- Message 1:
- Originator:
Device HVAC-1 - Data:
{"command": "setFanSpeed", "value": "HIGH"}
- Originator:
- Message 2:
- Originator:
Device HVAC-2 - Data:
{"command": "setFanSpeed", "value": "HIGH"}
- Originator:
说明:节点查询来源实体(Building A)包含的设备。找到两个设备,并为每个创建消息副本,将其设为新的来源实体。
示例2 — 复制到相关客户
入站消息
Originator: 设备 Thermostat-Z1
Data: {"alert": "battery_low"}
节点配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"relationsQuery": {
"direction": "TO",
"maxLevel": 1,
"filters": [
{
"relationType": "Manages",
"entityTypes": [
"CUSTOMER"
]
}
]
}
}
系统状态
名为 Customer B 的客户有一条到设备 Thermostat-Z1 的出站 Manages 关系。
出站消息
经 Success 链创建一条新消息:
- Message 1:
- Originator:
Customer B - Data:
{"alert": "battery_low"}
- Originator:
说明:节点查找对来源实体(Thermostat-Z1)具有 Manages 关系的实体。找到 Customer B 并以该客户为来源实体创建新消息。适用于将设备告警传播到拥有该设备的客户。