Composer での ThingWorx モデルの定義 > モデル化 > Thing > コンフィギュレーションテーブル
コンフィギュレーションテーブル
コンフィギュレーションテーブルは、 ThingThing TemplateThing Shapeマッシュアップで、頻繁に変わらないプロパティ値などの値の保存に使用されます。コンフィギュレーションテーブルの最も一般的な用途としては、外部リソースの資格証明やホスト情報が保存されます。コンフィギュレーションテーブルを使用して、頻繁に更新される動的データを保存しないでください。この情報はプロパティと同じ方法で定義されます。コンフィギュレーションを使用するには、コンフィギュレーションテーブルの名前と説明を定義し、そのテーブルに複数行を保存できるかどうかを指定します。プロパティと同様に、コンフィギュレーションの一部の値には追加情報が関連付けられています。
コンフィギュレーションテーブルは以下のいずれかを使用して定義できます。
Composer でのコンフィギュレーションテーブルの定義
以下の操作を行うことで、Thing、Thing Template、Thing Shape、マッシュアップにコンフィギュレーションテーブルを定義できます。
1. 「その他」 > 「コンフィギュレーションテーブルを追加」の順に選択します。
「コンフィギュレーションテーブルを追加」画面が表示されます。
2. コンフィギュレーションテーブルの名前を入力します。
名前では大文字と小文字が区別されます。
3. 「説明」フィールドで、コンフィギュレーションテーブルの目的または機能を説明します。
4. コンフィギュレーションテーブルのデータシェイプを選択します。
選択したデータシェイプにはプライマリキーフィールドが必要です。
5. コンフィギュレーションテーブルに複数のデータ行を表示する場合、「複数行を許可」チェックボックスをオンにします。
6. Thing、Thing Template、Thing Shape、またはマッシュアップに複数のコンフィギュレーションテーブルがある場合、「序数」フィールドに数値を入力することで、その位置を制御できます。
コンフィギュレーションテーブルが追加された後でこの位置を変更することはできません。
7. 「完了」をクリックします。
「コンフィギュレーション」ページにそのコンフィギュレーションテーブルが表示されます。
8. コンフィギュレーションテーブルを削除するには、「削除」ボタンをクリックします。
Java クラスにアノテーションを追加することによるコンフィギュレーションテーブルの定義
Java クラスにアノテーションを追加することによってコンフィギュレーションテーブルを作成できます。詳細については、ThingWorx Platform の API ドキュメントcom.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition を参照してください。
たとえば、以下のコードスニペットでは、クラス定義の上にコンフィギュレーションテーブル定義があります。
@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 インポートによって Thing、Thing Template、Thing Shape、マッシュアップにコンフィギュレーションテーブルを定義することもできます。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 を使用した Thing とマッシュアップのコンフィギュレーションテーブルの定義
REST API サービスを使用して、Thing とマッシュアップにコンフィギュレーションテーブルを追加できます。各コンフィギュレーションテーブルはデータシェイプに関連付けられます。複数行のコンフィギュレーションテーブルのデータシェイプにはプライマリキーが必要です。コンフィギュレーションテーブルが保存された後は、そのデータシェイプを変更できなくなりますが、そのデータシェイプのフィールドに変更を加えることは可能です。データシェイプへのフィールドの追加、データシェイプからのフィールドの削除、フィールドのベースタイプの変更を行えます。ベースタイプを変更すると、コンフィギュレーションテーブルのデータに影響が生じることがあります。たとえば、ベースタイプを string から integer に変更した場合、コンフィギュレーションテーブルのデータが失われる可能性があります。
ThingWorx Composer で Thing に対するサービスを使用したコンフィギュレーションテーブル定義を以下の図に示します。
上記で作成されたコンフィギュレーションテーブルは、ThingWorx Composer でその Thing の「コンフィギュレーション」ページに以下のように表示されます。
コンフィギュレーションテーブルにデータを追加するには、編集モードでそのエンティティを開き、コンフィギュレーションテーブル名の横の「追加」を選択します。
REST API を使用した Thing Template と Thing Shape のコンフィギュレーションテーブルの定義
Thing Template と Thing Shape にコンフィギュレーションテーブルを追加するため、Thing Template に対して AddConfigurationTableDefinition REST API を呼び出すサービスを Thing に記述できます。コンフィギュレーションテーブルを Thing Template (MyThingTemplate) に追加するユーザー定義サービス (AddConfigTableToTemplate) の例を以下に示します。同様に、コンフィギュレーションテーブルを Thing Shape に追加するサービスを記述できます。
ThingWorx Composer から、または以下のようなサービスを使用して、コンフィギュレーションテーブルにデータを追加できます。
コンフィギュレーションテーブルとコンフィギュレーションデータの継承
Thing Template および Thing Shape エンティティに作成されているコンフィギュレーションテーブルとそのデータは、Thing エンティティを実装することによって継承されます。Thing Template または Thing Shape レベルでコンフィギュレーションテーブルに対して行われたすべての定義変更が、Thing Template または Thing Shape からテーブルを継承した Thing に適用されます。
新しい Thing エンティティは、そのデータシェイプまたは Thing Template からコンフィギュレーションデータを継承します。ただし、Thing が作成された後、その Thing は Thing Template またはデータシェイプから継承したテーブルへのデータ変更を受け入れることができなくなります。
次に例を示します。
ThingTemplateAconfigTable1 があります
ThingShapeAconfigTable2 があります
ThingA が作成されます。これは ThingTemplateA に基づいており、ThingShapeA を実装します。
ThingA は Thing Template とデータシェイプからそれぞれ configTable1configTable2 のデータを継承します。
ThingTemplateAconfigTable1singleRow から multiRow に変更された場合、ThingA にはその変更が反映されます。
しかし、ThingTemplateAconfigTable1 内のデータが変更された場合、ThingA はこのデータ変更を継承しません。ThingAconfigTable1 のすべてのデータを保持します。ThingAconfigTable1configTable2 のデータを変更することもでき、このデータ変更は、その Thing Template またはデータシェイプ、あるいはこのコンフィギュレーションテーブルを継承したその他の Thing にカスケードされません。