組態表
組態表用於 物件物範本物形式以及 混搭,以儲存值,例如不經常變更的內容值。組態表的最常見用法是儲存外部資源的認證與主機資訊。不應使用組態表來儲存頻繁更新的動態資料。此資訊的定義方式與內容類似。欲使用組態,請為組態表定義名稱與描述,並指示它是否可以儲存多列。與內容相似,某些組態值有一些方面與其相關聯。
您可使用下列其中一項來定義組態表:
在 Composer 中定義組態表
在物件、物範本、物形式或混搭中,您可以執行下列操作來定義組態表:
1. 選擇「更多」 > 「新增組態表」
「新增組態表」畫面即會顯示。
2. 輸入組態表的名稱。
名稱區分大小寫。
3. 「描述」欄位中,描述組態表的用途或功能。
4. 選取組態表的資料形式。
所選資料形式必須具有主索引鍵欄位。
5. 如果您想要組態表顯示資料的多列,請選取「允許多列」核取方塊。
6. 如果物件、物範本、物形式或混搭有多個組態表,您可在「序數」欄位中輸入數值來控制其位置。
新增組態表之後無法變更位置。
7. 按一下「完成」
組態表會顯在「組態」頁。
8. 欲刪除組態表,請按一下「刪除」按鈕。
在 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。以下是使用者定義服務 (AddConfigTableToTemplate) 的範例,該服務將組態表新增至了物範本 (MyThingTemplate)。同樣的,您也可以編寫服務,以將組態表新增至物形式。
您可從 ThingWorx Composer 或使用類似如下所示的服務將資料新增至組態表:
組態表與組態資料繼承
在物範本及物形式實體中建立的組態表及其資料透過實行物件實體繼承。在「物範本」或「物形式」層級對組態表執行的任何定義變更都會在從其「物範本」或「物形式」繼承表格的物件中反映出來。
新物件實體會從其「資料形式」或「物範本」繼承組態資料。但是,在建立物件之後,它無法再接受繼承自其「物範本」或「資料形式」之表格的任何資料變更。
例如:
ThingTemplateA 具有 configTable1
ThingShapeA 具有 configTable2
會建立 ThingA,其以 ThingTemplateA 為基礎,並會實行 ThingShapeA
ThingA 將繼承 configTable1configTable2,同時會分別從其「物範本」與「物形式」繼承資料。
如果 ThingTemplateAconfigTable1singleRow 變更為 multiRow,則 ThingA 將會反映該變更。
但如果 ThingTemplateA 變更 configTable1 中的資料,則 ThingA 不會繼承資料變更。ThingA 會針對 configTable1 保留它擁有的任何資料。ThingA 也可以變更 configTable1configTable2 中的資料,且資料變更將不會重疊至其「物範本」或「物形式」或已繼承此組態表的其他物件。