特性规则创建说明


在模型管理中,特性规则 是用于定义模型之间或模型内部数据映射和转换的规则,确保数据能够正确传递和使用。

本文介绍创建特性规则的应用场景、创建原则及示例。

关键概念


了解以下概念有助于理解特性规则的作用:

  • 设备:能够通过网络传输数据并与物联网平台交互的实体,数据的字段命名和格式由设备厂商决定。

  • 模型:屏蔽设备差异和复杂业务逻辑,在不同场景中可承担不同用途。

  • 继承链:模型间的父子级关系链路,例如:A1 为父模型,A1-1 为其子模型,A1 的祖父模型和 A1-1 的子孙模型都在同一继承链上。

  • 表达式:数据映射的计算逻辑。在跨模型特性规则中,根据数据的传输方向,表达式可分为:

    • 上行表达式:“映射模型 → 当前模型”的映射逻辑,例如设备测点上送时,接入模型向业务模型的映射逻辑。

    • 下行表达式:“当前模型 → 映射模型”的映射逻辑,例如云端控制命令下发时,业务模型向接入模型的映射逻辑。

    有关表达式的更多信息,参见 特性规则表达式说明


../_images/property_rule_datastream.png

何时需要创建特性规则


特性规则分为两类:

  • 默认规则:模型内的特性规则,用于轻量级计算与字段增强,适用于在同一模型内对原始字段做轻量处理。

    示例:通过规则 power_kW = power_W / 1000,可将功率字段 power_W 转换为 power_kW,完成单位换算。

  • 跨模型规则:当不同模型共享同一设备数据时,需要在模型间做字段映射与语义转换。

    示例:设备通过模型 A 接入,而终端应用消费模型 B 的数据,此时为模型 A 与模型 B 建立映射,使应用能以模型 B 的语义消费设备数据。

跨模型规则创建原则


创建跨模型特性规则时,需遵循以下原则:

  1. 父模型先行

    • 子模型之间的特性规则,必须建立在其父模型之间已存在特性规则的前提之上。例:先建立 A1 → B1 的规则,才能建立 A1-1 → B1-1 的规则。

      ../_images/property_rule_parent_first.png
    • 一旦父模型之间建立了规则,已接入源模型的设备可以加绑目标模型及其子孙模型。例:若 A1 → B1 已建规则,则在接入了 A1 的设备上,可以加绑 B1 或 B1-1,共享测点数据。

      ../_images/property_rule_inherit.png
  2. 单向配置,双向映射

    • 在目标模型中配置映射规则,在同一规则中配置上下行表达式,避免双向链路混淆。

      例:如需把 A1.temperature 映射到 B1.roomTemp,需进入 B1 的特性规则配置页,选择 A1 为映射模型,新增规则并填写上下行表达式。

  3. 避免重复映射

    • 一旦某模型已被选为映射模型,其继承链上的其他模型不能再被选为映射模型,避免同一链路出现双重映射与冲突覆盖。

      例:已在 B1 中选了 A1 并完成映射,则不再允许同时在 B1 中再选 A1-1 或 A1 的父辈作为映射模型。

      ../_images/property_rule_duplicated_mapping.png
  4. 字段兼容

    • 字段类型、语义需兼容(例如数值型映射到数值型),并符合数据方向(上行/下行)要求。

    • 例:设备上报 power(W),业务模型需 Power(kW),规则表达式里用 Power = power / 1000 来兼容语义与单位。

  5. 来源唯一:一个目标字段只能有一个上游来源,避免二义性与竞争。

示例

默认规则示例


  • 设备字段:

    • voltage(电压,单位 V)

    • current(电流,单位 A)

  • 模型 A 字段:

    • voltage:与设备一致

    • current:与设备一致

    • power_W(功率,单位 W)

此时在模型 A 中配置默认特性规则,表达式为:

power_W = voltage * current

跨模型规则示例


  • 设备端字段:

    • voltage(电压,单位 V)

    • current(电流,单位 A)

    • P_set(设定功率,单位 W,支持写入)

  • 模型 A 字段:

    • voltage:与设备一致

    • current:与设备一致

    • P_set_W:与设备一致

    • power_W(功率,单位 W):默认规则 power_W = voltage * current

  • 模型 B 字段:

    • power_KW(功率,单位 kW)

    • powerSetpoint_kW(设定功率,单位 kW)

此时在模型 B 中创建跨模型特性规则:

  • 上行表达式power_kW = A.power_W / 1000

  • 下行表达式A.P_set_W = B.powerSetpoint_kW * 1000


创建后,数据将按照特性规则传递:

上行:

设备上送数据:voltage = 500 V, current = 10 A

模型 A:power_W = 500 * 10 = 5000 W(模型内规则)

模型 B:power_kW = 5000 / 1000 = 5 kW(跨模型上行表达式)


下行:

模型 B:powerSetpoint_kW = 6(应用下发控制命令)

模型 A:A.P_set_W = 6 * 1000 = 6000 W(跨模型下行表达式)

设备接收控制:P_set = 6000 W


通过以上配置,设备上送 voltagecurrent 时,系统与应用即可获得 power_kW;当应用下发 powerSetpoint_kW 时,设备能收到对应的 P_set。上行与下行均在同一条规则中得到维护。