配置表
配置表可用于事物事物模板事物形态数据表值流定时器计划程序工业事物形态工业网关混搭模板项目事物组通知博客Wiki小工具主数据混搭以存储不经常更改的值,例如属性值等。配置表最常见的用途是存储凭据和外部资源的主机信息。配置表不应用于存储经常更新的动态数据。此信息的定义方式与属性的定义方式类似。要使用配置,需要定义配置表的名称和说明,并指示该配置表是否可以存储多个行。与属性类似,某些配置值具有与其关联的方面。
* 
当按文件中存储的值导入时,将覆盖配置表数据。
* 
只能使用 java 注释创建共享配置表,且在使用 java 注释创建共享配置表时,不会运行访问权限修饰符检查。因此,用户可在专用事物模板上创建受限共享配置表。
您可以使用下列其中一项来定义配置表:
在 Composer 中定义配置表
可通过执行以下操作在受支持的实体上定义配置表:
1. 选择“更多” > “添加配置表”
“添加配置表”屏幕随即出现。
2. 输入配置表的名称。
名称区分大小写。
3. “说明”字段中说明配置表的目的或功能。
4. 选择配置表的数据形状。
所选数据形状必须具有主键字段。
5. “范围”字段中,选择实体的范围。
6. 选中“已弃用”复选框弃用实体。以 major.minor.patch 格式输入必须弃用实体的“版本”。也可按需添加备注。
7. 如果希望配置表显示多行数据,请选择“允许多行”复选框。
8. 如果实体具有多个配置表,则可通过在“顺序”字段中输入数字来控制其位置。
配置表添加完成后,将无法更改位置。
9. 单击“完成”
配置表随即显示在“配置”页面中。
10. 要删除配置表,请单击“删除”按钮。
通过在 Java 类中添加注释来定义配置表
您可以通过在 Java 类中添加注释的方式来创建配置表。有关详细信息,请参阅 com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition 的 ThingWorx Platform API 文档
例如,以下代码段表示位于类定义上方的配置表定义:
@ThingworxConfigurationTableDefinitions(tables = {
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample1",
description="Example 1 config table", isMultiRow=false,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="field1",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="field2",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="field3",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="field4",
description="",baseType="USERNAME"),
} ) ),
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample2",
description="Example 2 config table", isMultiRow=true,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="columnA",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="columnB",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="columnC",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="columnD",
description="",baseType="USERNAME"),
} ) )
})
public class GoodByeThing extends Thing {
}
通过 XML 导入/导出定义配置表
此外,您也可以通过 XML 导入在事物、事物模板、事物形态或混搭中定义配置表。下面的示例是导出为 XML 的实体的配置表定义:
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
* 
通过注释创建的配置表定义不会出现在导出的 XML 中。
以下是导出为 XML 的数据的配置表示例:
<ConfigurationTables>
<ConfigurationTable description="Template Config Table"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2">
<DataShape>
<FieldDefinitions>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p1" ordinal="1"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p2" ordinal="2"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p3" ordinal="3"/>
</FieldDefinitions>
</DataShape>
<Rows>
<Row>
<p1>
<![CDATA[1]]>
</p1>
<p2>
<![CDATA[2]]>
</p2>
<p3>
<![CDATA[3]]>
</p3>
</Row>
</Rows>
</ConfigurationTable>
</ConfigurationTables>
使用 REST API 为事物或混搭定义配置表
可以使用 REST API 服务将配置表添加到事物或混搭。每个配置表都与一个数据形状相关联。多行配置表的数据形状必须有一个主键。配置表一经保存,其数据形状即无法更改;但是,您可以在数据形状字段上进行更改。您可以从数据形状中添加或删除一个字段,或者更改字段的基本类型。更改基本类型可能会影响配置表中的数据。例如,将 string 基本类型更改为 integer 可能会导致配置表数据丢失。
下图显示了使用 ThingWorx Composer 中事物的服务进行的配置表定义:
上文所创建的配置表将显示在 ThingWorx Composer 中事物的“配置”页面下,如下所示:
要将数据添加到配置表,请在编辑模式下打开该实体,然后选择配置表名称旁的“添加”
使用 REST API 为事物模板和事物形态定义配置表
要将事物模板和事物形态添加到配置表,您可以在调用事物模板中 AddConfigurationTableDefinition REST API 的事物上写入服务。有关将配置表添加到事物模板 (MyThingTemplate) 的用户定义服务 (AddConfigTableToTemplate) 的示例,如下所示。类似地,您也可以写入一个服务来将配置表添加到事物形态。
可以通过两种方式将数据添加到配置表中,从 ThingWorx Composer 中或使用类似于如下所示的服务:
配置表和配置数据继承
配置表及其在事物模板和事物形态实体中创建的数据,将通过执行事物实体来继承。对事物模板或事物形态级别配置表进行的任何定义变更均会传播到从其事物模板或事物形态继承之表格的事物上。
新事物实体将从其数据形状或事物模板继承配置数据。然而,事物创建完成后,它将不再接受对继承自其事物模板或数据形状的表格进行任何形式的数据更改。
例如:
ThingTemplateA 具有 configTable1
ThingShapeA 具有 configTable2
ThingA 已创建,这基于 ThingTemplateA 并执行了 ThingShapeA
ThingA 将继承 configTable1configTable2 相应事物模板和数据形状中的数据。
如果 ThingTemplateAconfigTable1singleRow 变为 multiRow,则 ThingA 将反映此更改。
但是,如果 ThingTemplateA 更改了 configTable1 中的数据,则 ThingA 不会继承数据更改。ThingA 会保留其 configTable1 中的任何数据。ThingA 还可以更改 configTable1configTable2 上的数据,且数据更改不会级联到其继承了此配置表的事物模板、数据形状或其他事物。
这对您有帮助吗?