コンフィギュレーションテーブル
コンフィギュレーションテーブルは、
Thing、
Thing Template、
Thing Shape、
データテーブル、
ストリーム、
値ストリーム、
タイマー、
スケジューラ、
インダストリアル Thing Shape、
インダストリアルゲートウェイ、
マッシュアップテンプレート、
プロジェクト、
Thing Group、
通知、
ブログ、
Wiki、
ガジェット、
マスター、
マッシュアップで、プロパティ値などの頻繁に変わらない値の保存に使用されます。コンフィギュレーションテーブルの最も一般的な用途としては、外部リソースの資格証明やホスト情報が保存されます。コンフィギュレーションテーブルを使用して、頻繁に更新される動的データを保存しないでください。この情報はプロパティと同じ方法で定義されます。コンフィギュレーションを使用するには、コンフィギュレーションテーブルの名前と説明を定義し、そのテーブルに複数行を保存できるかどうかを指定します。プロパティと同様に、コンフィギュレーションの一部の値には追加情報が関連付けられています。
|
コンフィギュレーションテーブルデータは、ファイルに保存されている値によってインポート時に上書きされます。
|
コンフィギュレーションテーブルは以下のいずれかを使用して定義できます。
Composer でのコンフィギュレーションテーブルの定義
サポートされているエンティティでは、以下の操作を実行することでコンフィギュレーションテーブルを定義できます。
1. > の順に選択します。
「コンフィギュレーションテーブルを追加」画面が表示されます。
2. コンフィギュレーションテーブルの名前を入力します。
名前では大文字と小文字が区別されます。
3. 「説明」フィールドで、コンフィギュレーションテーブルの目的または機能を説明します。
4. コンフィギュレーションテーブルのデータシェイプを選択します。
選択したデータシェイプにはプライマリキーフィールドが必要です。
5. コンフィギュレーションテーブルに複数のデータ行を表示する場合、「複数行を許可」チェックボックスをオンにします。
6. エンティティに複数のコンフィギュレーションテーブルがある場合、「序数」フィールドに数値を入力することで、その位置を制御できます。
コンフィギュレーションテーブルが追加された後でこの位置を変更することはできません。
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 の
「コンフィギュレーション」ページに以下のように表示されます。
![](../../../ThingWorx/images/ConfigurationTableView.png)
コンフィギュレーションテーブルにデータを追加するには、編集モードでそのエンティティを開き、コンフィギュレーションテーブル名の横の
「追加」を選択します。
![](../../../ThingWorx/images/adding_configuration_table_data.png)
REST API を使用した Thing Template と Thing Shape のコンフィギュレーションテーブルの定義
Thing Template と Thing Shape にコンフィギュレーションテーブルを追加するため、Thing Template に対して AddConfigurationTableDefinition REST API を呼び出すサービスを Thing に記述できます。コンフィギュレーションテーブルを Thing Template (MyThingTemplate) に追加するユーザー定義サービス (AddConfigTableToTemplate) の例を以下に示します。同様に、コンフィギュレーションテーブルを Thing Shape に追加するサービスを記述できます。
ThingWorx Composer から、または以下のようなサービスを使用して、コンフィギュレーションテーブルにデータを追加できます。
![](../../../ThingWorx/images/adding_configuration_table_data_thing_template.png)
コンフィギュレーションテーブルとコンフィギュレーションデータの継承
Thing Template および Thing Shape エンティティに作成されているコンフィギュレーションテーブルとそのデータは、Thing エンティティを実装することによって継承されます。Thing Template または Thing Shape レベルでコンフィギュレーションテーブルに対して行われたすべての定義変更が、Thing Template または Thing Shape からテーブルを継承した Thing に適用されます。
新しい Thing エンティティは、そのデータシェイプまたは Thing Template からコンフィギュレーションデータを継承します。ただし、Thing が作成された後、その Thing は Thing Template またはデータシェイプから継承したテーブルへのデータ変更を受け入れることができなくなります。
次に例を示します。
• ThingTemplateA に configTable1 があります
• ThingShapeA に configTable2 があります
ThingA が作成されます。これは ThingTemplateA に基づいており、ThingShapeA を実装します。
ThingA は Thing Template とデータシェイプからそれぞれ configTable1 と configTable2 のデータを継承します。
ThingTemplateA で configTable1 が singleRow から multiRow に変更された場合、ThingA にはその変更が反映されます。
しかし、ThingTemplateA で configTable1 内のデータが変更された場合、ThingA はこのデータ変更を継承しません。ThingA は configTable1 のすべてのデータを保持します。ThingA は configTable1 と configTable2 のデータを変更することもでき、このデータ変更は、その Thing Template またはデータシェイプ、あるいはこのコンフィギュレーションテーブルを継承したその他の Thing にカスケードされません。