模型与资产建模


模型是用户可在 EnOS 上管理的、特定设备资产或非设备资产(逻辑资产)的抽象。模型介绍物的特征、能力、能提供的服务,以及可能发生的事件。


../../_images/smart_bulbs.png


模型抽象出资产的共同特征,形成一个模型,以便应用进行处理。以智能灯泡为例,尽管规格不同,其属性相似、功能逻辑相仿、收集的数据种类相同。我们便可以用抽象的模型标准化智能灯泡的特征。设备模型让用户免于设备多样性的迷惑,使其专注于资产的共同特征,助力应用开发。

模型功能定义

用户可根据产品的实际需求定义以下要素用以定义一个模型。


EnOS 提供了一个模型标准功能定义库,包含了行业标准功能定义,建议在为模型创建功能定义之前首先从库中进行选择,当在库中找不到功能定义时才创建。更多信息,参见 模型功能元素标准库


用户可根据产品的实际需求定义以下要素用以定义一个模型。


模型功能定义 描述 例子
属性 描述设备的静态属性。用户可自定义属性的名称以及标识符,名称相当于是一个描述,允许中文输入。 名称、型号、位置、设计参数、经度等
测点 描述设备运行时的状态。测点允许用户自定义测点的名称以及标识符,名称相当于是一个描述,允许中文输入。 温度、压力、电流、电压、各类状态等
服务 可被外部调用的能力或方法。可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑。 下发的指令、执行的任务等
事件 设备运行时上报的事件,一般包含需要被外部感知和处理的通知信息。可以包含多个输出参数。用户可以使用 EnOS 数据订阅服务订阅事件数据,详情参见 数据订阅 设备状态变更、指令执行完毕等 。

数据类型

模型的属性、测点、服务、事件,都需要通过数据来描述,每一个数据都有一个类型。EnOS 模型的要素支持以下数据类型。

  • int32:32 位带符号整数
  • float:浮点型数据
  • double:双精度浮点型
  • enum:枚举型数据
  • string: 字符串类型,长度为 1-1024 个字节
  • timestamp:时间戳类型数据,格式为 UTC 时间,精确到毫秒
  • date: 日期类型数据 yyyy-MM-dd HH:mm:ss
  • struct:构造体类型数据,不允许嵌套 struct,成员字段只能是 int32、float、double、enum、bool、string、date 类型
  • array:数组类型数据。数组成员只能是 int32、float、double、string 类型。使用时需要声明数组内元素的数据类型。
  • file:文件类型数据,值是 URI 格式的文件路径。


注解

  • 支持的数据类型将根据所选的功能类型和测点类型而有所不同。
  • 对于属性和测点,如果数据类型是非 enum 或 struct,你可以选用系统内置的一些单位,如:千米,分米,百分比等。有关单位的列表,参见 EnOS 内置单位
  • 对于 file 数据类型,当前仅 HTTP 协议可用于上载和下载。

模型关系

创建模型的时候,有 拷贝继承 两种模式。两种不同的创建模式主要体现在模型关系上。

拷贝

基于 拷贝 模式创建的模型。新建模型与被拷贝模型有完全相同的四要素,两个模型相互独立,模型变更互不影响。 拷贝 主要用于在特殊情况下进行较小的修改即可快速创建相似的模型。

继承

基于 继承 模式创建的模型。新建的模型被定义为 子模型,被继承的模型定义为 父模型继承 主要用于在特殊情况下为原模型扩展创建新模型。子模型主要有以下特性:

  • 子模型继承父模型的所有要素,继承自父模型的元素无法被修改。
  • 子模型可以再被继承,支持多层的继承关系。
  • 子模型可以创建独立的要素,但子模型中新增的要素不可与所有上级父模型中的元素重名。
  • 当父模型中的四要素发生变更,则子模型中继承自父模型的四要素同步变更,保持与父模型一致。


2.4 CU3 起,不支持共享或删除存有继承关系的模型。

模型权限

模型分为 公共模型私有模型 两类。各自权限策略不同。

../../_images/public_private_models.png

公共模型

公共模型是 EnOS 沉淀的领域标准模型,对所有 OU 开放。所有 OU 都具有读权限,任何 OU 都不具有写权限。

私有模型

在本 OU 下创建的模型都属于私有模型。私有模型不对其他 OU 开放。OU 内所有用户都有读权限,被授权的用户拥有私有模型的写权限。

相关信息