关键概念


EnOS 模型管理继承了 EnOS 应用门户的用户和权限系统。开始之前,需了解应用门户的 相关概念

本文介绍模型管理的关键概念。

模型


模型在 EnOS 上的主要作用是抽象和标准化业务资产的特征和能力,以及这些要素之间的逻辑关系,以便进行数据分析和应用处理。模型侧重于描述资产的业务属性和逻辑关系,而非设备的技术细节。以智能灯泡为例,尽管规格不同,其属性相似、功能逻辑相仿、收集的数据种类相同,我们便可以用抽象的模型标准化智能灯泡的特征。模型让用户免于设备多样性的迷惑,使其专注于资产的共同特征,助力应用开发。


../_images/smart_bulbs.png


除了表示一个实体设备外,模型也可以表示一个包含了一系列同类型或不同类型设备的物理场所或容器。例如,一个风场就是一个物理场所,包含了若干风力发电机设备。风场也都具有通用的属性种类、运行时数据和状态,例如平均风速、平均发电量等。这个风场模型囊括了平均风速、发电量等通用业务指标,而不需要关注每台发电机的具体参数。


通过建立模型,EnOS 使应用开发人员能够聚焦于业务逻辑,而不必过多地关注底层设备的异构性。例如,一个监控电表的应用需要记录、处理、分析、展示从实际电表设备收集到的数据。为了向应用描述电表设备,需要抽象出电表的通用测点和处理逻辑,利用模型可以完成抽象。模型将复杂的现实世界转化为标准化、面向自动化的业务实体,极大地提升了应用开发的效率和灵活性。

组件


组件是一种可重复使用的模型,组件与模型之间可以建立 引用 关系。当模型被开放为组件后,其它模型可以引用该组件内的特性,可以跨分组引用组件,不受分组权限的限制。组件也可以被分享到其它 OU,以实现跨 OU 引用。在模型内查看被引用的组件的特性时,特性标识符为 “组件标识符:特性标识符”。

  • 只能引用已开放为组件的模型。开放为组件后,模型内不能包含其它组件。

  • 已被其它模型引用的组件不能取消开放。

  • 若父模型未开放为组件,其子模型也不可开放为组件。

  • 当父模型开放为组件后,新建的子模型也自动开放为组件。

模型类别


在 EnOS 中,根据模型是否属于当前 OU,可以分为 2 种模型:共享模型和自建模型。

共享模型


共享模型是在其它 OU 创建,并被 分享 至当前 OU 的模型,包含 EnOS 沉淀的、关键领域的模型。共享模型由其它 OU 维护,共享模型一旦更新,可由其它 OU 同步至当前 OU,是否自动更新取决于分享时配置的策略。你可以直接使用 EnOS 提供的共享模型作为设备的模型。也可以在模型的原始配置基础上进行自定义配置,形成 已自定义的共享模型 后使用。


../_images/concept_model.png


模型 菜单的 共享模型 标签页中,可以查看其它 OU 分享至当前 OU 的所有共享模型。

自建模型


自建模型是在当前 OU 创建的模型。如果共享模型无法满足你的需求,你可以:

  • 从零开始创建一个定制化的自建模型。

  • 复制继承 其它模型,在此基础上进行自定义配置。

  • 从其它 OU 批量导入模型。

自建模型由当前 OU 维护,可以将自建模型分享至其它 OU。分享后,其它 OU 可以查看和使用该模型。


在模型管理的 模型 菜单中,可以查看到所有在当前 OU 中自建的模型。

模型构成


模型由模型的基本信息、模型要素、特性规则和模型视图构成,它们的关系如下图所示。


../_images/concept_definition.png

模型要素


模型要素主要用于定义模型对应的设备是什么、能做什么,可以对外提供哪些服务。模型要素分为:

  • 特性:用于描述设备特点和状态的核心要素,主要包括:

    • 属性:设备的静态特征信息,如型号、安装位置、制造商等基本信息。

    • 测点:设备运行时的实时状态数据,如实时温度、电压、累计用电量等监测指标。

  • 命令:用于远程控制和运维设备的能力或方法,如远程开/关电表,设置用电限额等。可为命令设置输入参数和输出参数,实现更复杂的业务逻辑。


模型中的模型要素来自于:

  • 自建:在模型内自建的要素。

  • 引用:引用自模型要素库的要素。

  • 组件:来自模型内已引用的组件的要素。

  • 继承:从父模型中继承的要素。

更多信息,参见 配置模型定义

特性规则


特性规则基于表达式定义不同模型特性之间的逻辑关系,用以映射单个模型内或多个模型之间的模型特性数值,满足不同业务场景下的个性化需求,提高模型的适应性。例如,在以下场景中,你可以定义特性规则:

  • 跨模型特性的数据映射。例如“风场”模型的 “总发电功率” 测点数据来自风场内所有风机设备的“当前发电功率”数据之和,可在特性规则中设置 风场.总发电功率 = sum(各风机.当前发电功率)

  • 原始设备数据与模型特性定义不匹配。例如设备提供的原始数据格式或单位可能与模型要求的形式不一致,需要通过特性规则进行转换和映射。

  • 模型特性需要基于多个原始测点数据动态计算得出。例如轿车模型的“续航效率”测点数据需要根据“最大续航里程”和“电池容量”数据来计算,可在特性规则中设置 续航效率 = 最大续航里程/电池容量


更多信息,参见 配置特性规则

模型视图


模型视图允许用户根据不同业务需求,从一个完整的模型中选择性地展示部分模型要素,并自定义模型要素的展示顺序和名称。一个完整的模型可以包含大量的属性、测点和命令等要素,但在实际应用中并非所有要素都需要被展示。模型视图能够对这些要素进行筛选和排序,仅显示应用所需的关键信息,增强应用的可用性和可读性。此外,模型视图还支持对模型要素进行自定义命名,以符合业务语义。这样不仅能提高最终用户的理解,也能方便应用对这些模型要素进行二次开发和集成。


更多信息,参见 配置模型视图

模型管理


模型管理涉及模型的组织、复用和权限等方面,为模型的管理和应用提供了重要的基础支撑。

  • 组织管理:通过模型集,可管理模型的组织和场景化应用。

  • 复用管理:通过模型要素库、模型分享和模型迁移,管理模型的复用和分发。

  • 权限管理:通过模型分组,管理模型的权限控制。

模型集


模型集是一组模型集合,基于模型的使用场景创建,并定义了该场景的设备或业务的模型要素。模型集简化了模型构建流程,帮助不同领域的用户快速应用模型,满足特定场景需求。

模型要素库


模型要素库包含当前 OU 内可以获取的所有模型要素,包括在当前 OU 自建的模型要素,或者其它 OU 分享至当前 OU 的模型要素,你可以在这里配置需要多次引用的模型要素,然后在配置模型定义时进行引用。模型要素库帮助用户集中管理模型要素,并提升模型要素的管理和使用效率。

模型分享


模型分享是指模型所有者可从将当前 OU 内的模型集、模型及其依赖的要素分发到环境内的其它 OU,实现一次创建,多次复用,提升模型的使用效率。分享模型前,需了解当前 OU 是否具有分享模型的权限,以及当前账号是否具有 分享管理 菜单的访问权限。更多信息,参见 模型管理权限分配

支持为模型配置以下分享策略:

  • 内部使用:不分享,仅本 OU 可见。

  • 全 OU 共享:分享该模型至所有 OU。

同时支持为模型配置以下分享方式:

  • 手动分享:手动为已有 OU 或新 OU 触发同步流程,若在分享后更新模型,更新内容不会自动同步到对应 OU。

  • 自动分享:EnOS 自动将模型及其更新同步至已有 OU 或新 OU。若自动同步失败,需排除异常后手动同步。

模型迁移


模型迁移是指通过 导出/导入 功能实现模型、模型集在不同环境之间的迁移。你可以将当前环境的模型以及相关依赖导出为 ZIP 包,然后将模型包导入到目标环境中,从而实现模型的环境级迁移。模型迁移支持跨版本、跨环境的模型部署,提升模型的可移植性和复用性。导入模型时,系统会自动处理模型之间的依赖关系,确保模型在目标环境中可以正常运行。

  • 支持导入从 EnOS 设备连接与管理(简称 DCM)导出的模型文件。

  • 支持导入从 EnOS 通用数据服务中导出的 3.X 模型文件。

  • 支持为共享模型导入自定义配置。


迁移前,需确保当前账号具有模型导出导入的权限。更多信息,参见 模型管理权限分配

模型分组


分组是模型和模型集的权限管理单元,仅当具有对应分组的权限时,才能在分组内新增、删除、修改模型。模型通过分组隔离,分组间的数据不会发生冲突,有利于数据权限管控。在模型管理中,根据模型是否由某一 OU 统一管理,可将分组分为以下类型:

  • 标准分组:需要为标准分组指定一个开发者 OU,在开发者 OU 中创建和管理标准分组的模型,并分享到其它 OU 后,其它 OU 方可查看和使用。例如光伏领域可以申请创建一个 Solar 分组,在开发者 OU 创建和更新,并分享到指定的 OU。

  • 内置分组:每个 OU 都可查看、创建和管理内置分组的模型。根据是否可跨 OU 查看,又分为:

    • 自定义分组(Custom):当前 OU 内创建的自定义分组模型,仅限于当前 OU 内查看和使用,不支持分享到其它 OU,相当于 OU 内私有模型。

    • 默认分组(Default):开发者 OU 内创建的默认分组模型,可分享至其它 OU。其它 OU 内创建的默认分组模型,仅限当前 OU 内查看和使用。此分组通常用于管理 EnOS 2.X 中的存量模型,基于 EnOS 2.X 开发的应用可以直接读取此分组内的模型,无需修改任何配置。


模型标识符中拼接了分组标识符和模型版本号,同一分组中的模型标识符唯一。格式为:A:B:C:D

  • A:模型遵循的规范的标识,默认为 dtmi

  • B:所属分组标识符。

  • C:业务标识符(由用户指定),不同分组间模型的业务标识符可以相同。

  • D:版本号,默认为 1。

模型关系


模型之间存在 复制继承、和 引用 关系。

复制


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

继承


基于 继承 模式创建的模型。新建的模型被定义为 子模型,被继承的模型定义为 父模型继承 主要用于在现有模型的基础上扩展创建新模型。这种模型关系主要有以下特性:

  • 子模型继承父模型的所有要素,继承自父模型的要素无法修改。

  • 子模型可以再被继承,支持多层的继承关系。

  • 当父模型中的要素发生变更,则子模型中继承自父模型的要素同步变更,保持与父模型一致。

  • 子模型可以创建独立的要素,当子模型中新增的要素与所有父模型中的要素标识符重复时,父模型要素将覆盖子模型要素。

引用


引用关系包括一个模型引用另一个模型(组件),以及一个模型引用已有的要素。


为模型引用组件


配置模型时若引用了已开放为组件的其他模型,这两种模型即建立了 引用 关系。被引用的模型为 组件,引用了组件的模型定义为 主模型。这种模型关系主要有以下特性:

  • 主模型引用组件后,组件中的模型要素将全部组合至主模型中。

  • 无法在主模型中修改引用自组件的模型要素。

  • 组件可以同时被多个模型引用,可以被其它分组的模型引用。

  • 当组件的要素发生变更,则主模型中引用自组件的要素同步变更,保持与组件一致。


为模型引用要素


为模型添加要素时,若引用了模型要素库中的要素,模型和被引用的要素之间将建立 引用 关系。该要素可能来自其它模型,也可能直接在模型要素库中创建。

  • 无法在模型中修改引用的要素。

  • 要素可以同时被多个模型引用,无法跨分组引用。

  • 要素一旦更新,模型将同步变更。