元数据转换器
  metadataTransform组件:元数据转换器。使用 expr (opens new window) 表达式引擎对消息元数据进行灵活转换和处理,支持创建新的元数据或更新现有元数据。
# 配置
| 字段 | 类型 | 说明 | 默认值 | 
|---|---|---|---|
| mapping | map | 元数据转换表达式映射表,格式为 {字段名: 转换表达式} | 无 | 
| isNew | bool | 是否创建新的元数据列表。true表示创建新列表,false表示更新现有元数据的对应字段 | false | 
支持的变量:
${id}- 消息ID${ts}- 消息时间戳${data}- 原始消息内容${msg}- 消息体对象(JSON类型时可用${msg.field}访问字段)${metadata}- 消息元数据对象${msgType}- 消息类型${dataType}- 数据类型
表达式示例:
upper(${msg.name})- 转换设备名称为大写${metadata.productType}- 获取产品类型${msg.temperature} + 50- 温度值加50replace(${metadata.productType}, 'old', 'new')- 替换产品类型中的文本${msg.humidity} > 80 ? 'High' : 'Normal'- 根据湿度判断状态format("%s-%s", ${msg.type}, ${metadata.version})- 格式化字符串len(${metadata.tags}) > 0- 检查标签是否存在
更多expr表达式语法参考:expr (opens new window) 更多变量使用方法参考:组件配置变量
# Relation Type
- Success: 转换执行成功,消息发送到
Success链路 - Failure: 以下情况消息发送到
Failure链路:- 表达式语法错误
 - 表达式执行异常
 - 变量不存在或类型错误
 
 
# 执行结果
组件会根据配置执行元数据转换:
- 当isNew=true时,创建全新的元数据列表
 - 当isNew=false时,仅更新mapping中指定的元数据字段
 - 转换后的元数据会随消息一起传递给下一个节点
 
# 配置示例
{
  "id": "s1",
  "type": "metadataTransform",
  "name": "元数据转换",
  "configuration": {
    "mapping": {
      "name":        "upper(${msg.name})",
      "tmp":         "${msg.temperature}",
      "alarm":       "${msg.temperature}>50",
      "productType": "${metadata.productType}"
    }
  }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
在 GitHub 上编辑此页  (opens new window)
  上次更新: 2025/09/03, 10:09:04