データシェイプ
データシェイプはモデル内のデータを表します。データシェイプは、フィールド定義と関連メタデータの名前付きセットです。データシェイプ内の各フィールドがデータ型を持ちます。ThingWorx には定義済みのベースタイプのセットがあります。
* 
ThingWorx では、いくつかの予約済みの名前はデータシェイプフィールド名として使用できません。たとえば、ThingShapesourceTypelocationsourcekeytagstimestamp などです。
データシェイプは、アプリケーションの作成に役立ちます。アプリケーションがデータを消費するときに、データシェイプ定義があると、そのデータセットを表す方法についての知識がアプリケーションに組み込まれるためです。たとえば、マッシュアップ上のグリッドにデータを渡すと、グリッドではデータシェイプ定義に基づいてそのデータがどのようなものであるかが判別されます。グリッドではどのフィールドが数値、文字列、日付であるかが判別されます。グリッドでのデータのレンダー方法を設定する際には、データセットに関するこの情報によって設定がはるかに簡単になります。
データを保存するために作成されている特別な Thing として、ストリーム、値ストリーム、データテーブルがあります。データストレージ Thing を定義する場合、データシェイプを定義する必要があります (値ストリームを除く)。
データシェイプはストリーム、値ストリーム、データテーブル用の定義以外にも多くの場面で使用されます。データシェイプはデータセットを定義しなければならない場合にも必ず使用します。たとえば、サービス実装のためのインフォテーブル出力を定義する場合、データシェイプを使用して出力結果セットを定義します。INFOTABLE タイプの Thing プロパティを作成でき、そのプロパティを定義するデータシェイプも指定できます。
データシェイプのフィールドを定義する場合、少なくとも 1 つのフィールドをプライマリキーとしてマークする必要があります。MSSQL を永続化プロバイダとして使用している場合、プライマリキーの値の長さ (複数のフィールドがプライマリキーとしてマークされている場合には、各プライマリキーの値の長さの合計) は 128 文字に制限されます。設定する値の長さが 128 文字を超えている場合、使用している MSSQL のバージョンに応じて、次のいずれかのエラーメッセージが表示されます。
MSSQL 2019:
Unable to Invoke Service AddDataTableEntries on testDataTable :
java.lang.RuntimeException: com.thingworx.common.exceptions.DataAccessException:
[1,018] Data store unknown error: [Error occurred while accessing the data provider.]
MSSQL 2017:
Unable to Invoke Service AddDataTableEntries on testDatatable :
java.lang.RuntimeException: com.thingworx.common.exceptions.DataAccessException:
[22,001] String or binary data would be truncated.
フィールド定義のベースタイプ
ベースタイプ
説明
BASETYPENAME
有効なベースタイプの名前。
BLOB
バイナリラージオブジェクト。
BOOLEAN
値 true または false。
DASHBOARDNAME
ダッシュボードの名前。
DATASHAPENAME
モデル内のデータシェイプへの参照。このため、特別な処理があります。
DATETIME
書式設定に従った日付と時刻。
GUID
グローバル一意識別子。
* 
GUID をベースタイプとして使用している場合、GUID 値を設定することをお勧めします。空白 (デフォルト) のままにしないでください。
GROUPNAME
ユーザーグループの名前。
HTML
HTML コンテンツ。
HYPERLINK
標準 URL (www.ptc.com など)。
IMAGE
イメージとしてレンダー可能なバイナリデータ。
IMAGELINK
イメージへの URL リンク。
INFOTABLE
ThingWorx におけるデータの標準的な表現。SQL 結果セットとほぼ同じです。インフォテーブルの構築、消費、解析用に多数の組み込みサービスが用意されています。
INTEGER
小数部なしで書き込み可能な数値。
JSON
JavaScript Object Notation オブジェクト。
LOCATION
標準世界測地系 (WGS) 84 座標。[緯度, 経度], 標高として表されます。
LONG
INTEGER ベースタイプより長い範囲の入力が必要な場合、LONG タイプを使用する必要があります。
MASHUPNAME
ThingWorx マッシュアップへの参照。このため、特別な処理があります。
MENUNAME
メニューの名前。
NOTHING
何も含まれていません (空)。
NUMBER
数値。
* 
指数値を使用できます。例: 123e45
PASSWORD
マスクされたパスワードの値。詳細については、パスワードを参照してください。暗号化の方法については、暗号化を参照してください。
QUERY
"フィルタ" の配列を含む JSON オブジェクト。各フィルタに "value"、"type"、"fieldname" が含まれている必要があります。
SCHEDULE
Schedule Editor を使用して設定された cron ベースのスケジュール。
STRING
任意の数の英数字。
STYLETHEMENAME
スタイルテーマへの参照。このため、特別な処理があります。
TAGS
ThingWorx タグの値。
TEXT
任意の数の英数字。STRING との違いとして、TEXT にはインデックスが付きます。
THINGCODE
ドメイン ID とインスタンス ID を含む Thing の数値表現。たとえば、2:1。
THINGNAME
Thing への参照。このため、特別な処理があります。
THINGSHAPENAME
モデル内の Thing Shape への参照。このため、特別な処理があります。
THINGTEMPLATENAME
Thing Template の名前。
TIMESPAN
TimeSpan オブジェクトは、正または負の日数、時間、分、秒の数値として測定される時間間隔 (継続時間または経過時間) を表します。
USERNAME
システムで定義されている ThingWorx ユーザーへの参照。
VEC2
2 つの数値の集合。たとえば、2D 座標 x と y。
VEC3
3 つの数値の集合。たとえば、3D 座標 x、y、z。
VEC4
4 つの数値の集合。たとえば、4D 座標 x、y、z、w。
XML
XML スニペットまたは XML ドキュメント。
既存のデータシェイプの更新
既存のデータシェイプを定義後に更新する場合 (フィールド定義、タイプ、またはプライマリキーの変更)、以下の影響を考慮してください。
データシェイプを変更した後にデータを挿入できます。ただし、新しい行は新しいデータシェイプ定義にマッピングされます。
データシェイプを変更した後にデータを挿入する場合、プライマリキーが動作しますが、その場合でも既存のキーの整合性は検証されます。挿入時に、プライマリキーとしてマークされているすべてのフィールド値を (フィールド定義の順序で) key という 1 つのフィールドに連結することによってキーの値が構築されます。
データシェイプを変更した後で行をクエリーすると、フィールド名とタイプを結果セットにマッピングするために最大限の試みが行われます。既存の行のタイプまたはフィールド名が一致しない場合、その行はセットに含まれますが、値は取り込まれません。
これは役に立ちましたか?