元素模板
因为在物联网、工业场景里,同类型的设备或逻辑实体很多,因此为减少建模以及维护的压力,并保证数据的标准化,IDMP 提供元素模板。用户在创建一个新元素时,可以选择用一个元素模板做模板。该功能在 IDMP 主菜单基础库
之下。
元素模板容许继承,可以在一个模板的基础上创建新的模板。比如给汽车这个大的品类创建一个模板,然后以汽车模板为基础,创建电动汽车模板,在电动汽车模板的基础上,还可以创建 Tesla 这个品牌的模板。
因为一个元素包括通用、属性、分析、面板、看板、通知等部分,因此一个元素模板包括元素通用模板、属性模板、分析模板、面板模本以及通知模板。用户创建元素模板时,首先创建的是元素通用模板。
替换字符串
在创建模板的过程中,无论是数据引用、元素名、事件名等,都不能是固定字符串,而应该基于实际创建的实例动态生成。为提供足够的灵活性和自动化,IDMP 提供了很多替换字符串,比如:
- 模板名:${Template#name}
- 元素名:${elementName}
- 分析名:${analysisName}
- 开始时间:${startTime}
- 结束时间:${endTime}
还有很多。但您不用去了解到底有哪些,因为在任何输入的地方,IDMP 都会把在该处您能用的合法替换字符串提供给您让您选择,而且具有可读性,不用翻看用户手册。
上述的这些替换字符串是系统提供的。但为增加更大的灵活性,IDMP 还容许您在元素模板里,自己定义可替换字符串 KEYWORD
, 而且可以定义多个。为便于协作,对自定义的 KEYWORD
可替换字符串,定义时,还要求输入帮助性的描述信息。当使用这些自定义字符串时,它会把您提供的帮助描述信息显示出来,指导您输入正确的字符串。
元素通用模板
在左侧树状结构三个点菜单点击创建元素模板
或在元素模板列表页点击+
,您就进入了元素通用模板创建页面。需要注意的地方有几点:
- 配置项
仅作为基础模板
(Base template only), 如果选择了它,表示该元素模板仅仅做为基础模板,您无法由它直接创建元素。 - 配置项
容许扩展
(Allow extension),如果选择了它,表示容许在该模板的基础上添加个性化的属性、分析、面板等。如果没选择,则基于该模板创建的元素不能有任何个性化扩展。 元素命名模式
是指基于该模板创建的元素的名字是如何自动构建的。您可以输入任何字符串,但还可以点击输入框旁边的+
可以看到系统提供的可以替换的字符串,比如模板名称
,点击它,替换字符串${Template#name}
就出现在输入框里,今后用该模板创建一个元素时,名字就会带有模板名称。 点击+
,还可以看到KEYWORD
,这是系统为用户准备的特殊替换字符串。点击它,${KEYWORD1}
就出现在输入框里,而且系统要求您输入一个备注信息,这个备注信息是您自己输入的帮助性文字,今后在使用这个KEYWORD
的时候会提醒您。如果有这个KEYWORD
,在用该模板创建一个元素时,系统会弹框出来要求您输入这个KEYWORD
。这个KEYWORD
替换字符串可以用在该元素模板的属性模板、分析模板、面板模板中可输入替换字符串的地方,给字符串的构建提供了极大的灵活性。更具体的使用,请看后面的示例。- 可以输入位置信息以及附件属性。
属性模板
创建了元素模板后,您需要在该元素模板里创建属性模板。点击元素模板,然后在路径条最后的下拉菜单里,选择属性模板
,然后点击+
即可。
对于属性模板,您需要填写属性名字、类别、数据类型、计量单位、缺省值、描述信息等,不用多解释。
对于属性,您还需要指定数据引用类型,缺省是无。但如果数据引用类型选择了TDengine 标签
或TDengine 指标
时,那意味着这个属性与 TDengine TSDB 里某个库的某张表的某一列是对应的。模板里不能写成固定字符串,那否则所有基于该模板的元素的这个属性都指向了同一个库同一张表的同一列,因此这里必须使用字符串替换来解决。点击数据引用设置,系统弹框,它会要求您选择 TDengine 链接以及数据库,同时要求您输入源表名称模式
(Table Name Pattern), 点击+
,您会看到您可以使用的替换字符串。如果没有,您可以自定义一个KEYWORD
。然后输入列名,列名也可以使用可替换字符串。点击检查
(Check), 系统会帮您检查设置是否正确。
面板、分析、看板、通知模板
创建了元素通用以及属性模板后,您可以继续创建面板模板、分析模板、看板模板以及通知模板。点击元素模板,然后在路径条最后的下拉菜单里,选择对应的项,然后点击+
即可。
这些模板的创建与正常的面板、分析、看板、通知模板的创建没有区别,不做解释。
一个元素模板的示例
假设 TSDB 数据库 smdb
里有个超级表 SMeter
, 它有current
、voltage
两列时序数据,还有一列model
标签列。该超级表有 smeter-1, smeter-2 等子表。在 IDMP 里,我们创建一个对应的智能电表
元素模板,有电流、电压与型号三个属性,然后希望将 TSDB 里 SMeter
的每个子表与 IDMP 里基于智能电表
元素模板创建的元素对应起来。我们希望元素的命名规则为DEV-子表名
。最简单的方法,就是使用自定义的替换字符串 KEYWORD
,这个KEYWORD
就是子表名。那么在创建元素模板时,我们应该这么做:
- 点击创建元素模板,名字输入为
智能电表
, 在元素命名模式
的输入框里,输入DEV-
, 然后点击右侧的+
,选择KEYWORD
。系统弹框,要求输入帮助信息,您可以输入请输入数据库 smdb 里超级表 SMeter 的子表名
,这样今后可以提醒自己。元素命名模式
的输入框里将有字符串:DEV-${KEYWORD1}
- 创建完元素通用模板
智能电表
,开始创建它的属性模板,我们仅以电流
为例。属性的名字取为电流
,数据类型与 TSDB 里的数据类型一致,选为浮点数。将数据引用类型设为TDengine 指标
,点击数据引用设置,弹框,选择好 TDengine 连接,库smdb
,在源表名称模式
输入框,点击+
,选择KEYWORD1
。在列名输入框,输入current
即可。点击检查,输入一个存在的子表名,应该显示正常。 - 模仿第二步,完成属性模板
电压
的配置。对于型号
属性,数据引用类型选择TDengine 标签
,其他与第二步完全一致。 这样就创建好了元素模板以及他所属的属性模板。当基于智能电表
模板创建一个元素时,系统会弹框,要求输入KEYWORD1
,输入框里提示请输入数据库 smdb 里超级表 SMeter 的子表名
。这个时候,输入一个 TSDB 里存在的子表名,比如smeter-1
,那么这个元素就自动创建出来,它的元素名字是DEV-smeter-1
,查看它的三个属性,应该有以下的三个数据引用设置:
- 电流:connections['TDengine']/databases['smdb']/smeter-1/columns[current]
- 电压:connections['TDengine']/databases['smdb']/smeter-1/columns[voltage]
- 型号:connections['TDengine']/databases['smdb']/smeter-1/columns[model]
IDMP 提供的自定义可替换字符串十分灵活强大,便于您批量的、自动的将 TSDB 里的数据映射到 IDMP。TDengine 链接的资产模型的自动导入,就是利用KEYWORD
来实现的。