Thing Template
Thing Template は Thingインスタンスが実行時に利用する基本的な機能を、プロパティ、サービス、イベント、購読を介して提供します。各 Thing は Thing Template から作成されます。Thing Template によって別の Thing Template を拡張できます。ある製品の新しいバージョンをリリースする場合、そのバージョンで追加された特性を追加するだけでよく、モデル全体を再定義する必要はありません。このモデルコンフィギュレーションはアセットを複数のレベルで汎用化します。Thing Template は Thing Shape を実装することで 1 つ以上の追加の特性を派生できます。Thing Template に変更を加えた場合、変更はその Thing Template を実装する Thing に反映されるので、モデルのメンテナンスが簡素化されます。
Thing Template は、Thing の種類、つまりアセットクラスを分類するときや、固有の機能を持つ特定の製品モデルとして使用できます。2 つの製品モデルがあり、それらの製品モデルとソリューションとの相互関係が同じ (プロパティ、サービス、イベントが同じ) である場合、これらを 1 つの Thing Template としてモデリングできます。Thing Template を分類して、Thing をマッシュアップで役立つコレクションに集約できます。インデックシング、サーチ、および製品が将来発展したときのために Thing Template を分離できます。
システム定義の Thing Template
特定のタスク用の Thing を作成するときに使用可能なシステム定義の Thing Template が多数用意されています。このような Thing Template のいくつかは、アプリケーションを構築する際にさまざまなサービスと機能のユーティリティとして使用できます。
システム定義の Thing Template を以下に示します。
Blog - Blog Thing は、ブログ、コメント、またはディスカッションフォーラムコラボレーションオブジェクトをマッシュアップに実装するときに使用します。
Content Crawler - 外部システムまたはコンテンツ領域との特定のインタフェースを処理するよう設計されている Thing。インデックシングする外部コンテンツのリストを取得するサービスと、各コンテンツオブジェクトの詳細を取得するサービスを定義すると、ThingWorx によってデータがインデックシングされ、ThingWorx サーチ機能で使用可能になります。
Database - サードパーティリレーショナルデータベースシステムへの JDBC 接続。
Data Table - データテーブルはリレーショナルデータベースのテーブルと類似しており、ThingWorx でトランザクションデータ行を保存するときに使用できます。
File Repository - 保存される外部ファイルコンテンツ用に定義されている ThingWorx エンティティ。Edge Thing との間でファイルを転送する場合、特定のリポジトリとの間で転送します。ファイルリポジトリはサーバーの ThingworxStorage/repository フォルダ内のフォルダを指します。ファイルリポジトリのサービスによって、そのフォルダ内のファイルを表示および操作できます。
Generic Thing - 最小限の特性が継承されたベース Thing。最良事例は、カスタム Thing Template を定義することです。ただし、Thing 定義が 1 回かぎりの場合にはジェネリック Thing を使用することをお勧めします。
Mail Server - Mail Server Thing はアプリケーションから電子メールメッセージを送信する場合に作成できます。
Edge - Edge Thing は、通常はファイアウォール越しに別のネットワークに接続している別のサーバーにインストールされているデバイスまたはデータソースです。Edge Thing はローカルにインストールされている EMS を介してサーバーと通信します。Edge Thing の例としては OPC-DA サーバーがあります。
Edge Database - Edge Database Thing は別のサーバーまたはワークステーション上の OLE-DB または ADO.NET データベースまたはデータソースと通信するためのものです。Edge Database の例としては Microsoft Excel や Microsoft Access があります。
Edge Enhanced - リモートデスクトップトンネリングやファイル転送のサポートを必要とする、リモートでインストールされたデバイスまたはデータストアに対応するサーバーモデル Thing。
Scheduler - Scheduler Thing は cron パターンに基づいてジョブを実行するときに使用できます (1 日に 1 回や 1 時間に 1 回など)。
Source Control Repository - ソース管理リポジトリは、ローカルリポジトリのルートとなる、サーバーのファイルシステム上のフォルダを指します。これは「インポート/エクスポート」 > 「ソース管理エンティティ」で使用されます。
Stream - 時系列データストレージ。
Timer - 定義されている間隔でイベントを発生させる単純なタイマー。
Wiki - マッシュアップ内でドキュメントと関連コメントを共有するためのコラボレーションオブジェクト。
いずれかのシステム Thing Template の特定のインスタンスを作成するとき、ビジネスニーズと IoT 環境に適合するように設定できます。
システム定義のリモートテンプレート
Web ソケットを介した Edge デバイスまたはデータストアとの通信に使用できるシステム定義の Thing Template がいくつか用意されています。RemoteThing は、Web ソケットを使用してネットワーク内の別のノード (Thing) と通信するための命名規則です。WSEMS と SDK の Thing Template には以下のものがあります。
RemoteDatabase - リモート OLE-DB データソース。
RemoteThing - ファイル転送やトンネリングを必要としない Remote Thing。OPC-DA データソース Thing にも使用されます。プロパティ、サービス、イベントをサポートします。
RemoteThingWithFileTransfer - ファイル転送が可能な Remote Thing。
RemoteThingWithTunnels - トンネリングが可能な Remote Thing。
RemoteThingWithTunnelsAndFileTransfer - ファイル転送とトンネリングが可能な Remote Thing。
EMSGateway - スタンドアロン Thing として WSEMS をアドレス指定できるようにする場合には EMSGateway Thing Template を使用します。これは WSEMS がゲートウェイコンピュータ上で実行していて、ローカルエリアネットワーク内の別の IP アドレス上に存在する 1 つ以上の Remote Thing との通信を処理している状況で役立ちます。
SDKGateway - EMSGateway とほぼ同じですが、ゲートウェイとして SDK 実装を使用している場合に使用します。
前述の Thing Template に加え、ディスク IO 用に最適化された別のサーバーに永続化オブジェクトの負荷を分散する必要がある、フェデレーションストレージのシナリオで、以下の Remote Template を使用できます。
RemoteStream - 別の ThingWorx サーバー上で実行してデータを永続化するストリーム Thing へのローカルプロキシオブジェクトを作成します。
RemoteValueStream - 別の ThingWorx サーバー上で実行してデータを永続化する値ストリーム Thing へのローカルプロキシオブジェクトを作成します。
RemoteDataTable - 別の ThingWorx サーバー上で実行してデータを永続化するデータテーブル Thing へのローカルプロキシオブジェクトを作成します。
RemoteBlog - 別の ThingWorx サーバー上で実行してデータを永続化する Blog Thing へのローカルプロキシオブジェクトを作成します。
RemoteWiki - 別の ThingWorx サーバー上で実行してデータを永続化する Wiki Thing へのローカルプロキシオブジェクトを作成します。
拡張機能を使用した Thing Template の作成
拡張機能を使用して作成された Thing Template は、ThingWorx Composer で作成された Thing Template と基本的には同じです。Thing Shape は、プロパティ、コンフィギュレーションパラメータ、サービスが同じである Thing を作成するときに使用するベーステンプレートです。これを Composer で作成するか拡張機能フレームワーク内で作成するかによる違いは、サービスに使用される言語とサービスのコードを表示可能かどうかにあります。
Composer テンプレート:
サービスに JavaScript を使用
ソースコードが表示される
Extension SDK テンプレート:
サービスに Java を使用
ソースコードは表示されない
コンフィギュレーションの値を定義可能