Thing の購読
購読は イベントを受信してこれに応答するサービスです。購読にはソース (通常は Thing) が含まれています。Thing には、操作で応答するイベントの購読を設定できます。たとえば、あるエンティティで「モーターが過熱している」というイベントが発生した場合、それは「モーターをオフにする」という購読をトリガーすることによって、そのイベントを購読できます。Thing は、使用している Thing Templateおよび Thing Shapeから購読を継承できます。
購読は標準のサービスとよく似ていますが、購読はイベントに明示的にリンクしています。これにより、イベントに応答するコードからイベントを切り離すことができます。サービスと同様に、イベントに応答するカスタムビジネスロジックを実装できます。メールサーバー Thing を介して電子メールを送信したり、データベースに書き込んだり、そのプラットフォームで利用可能なサービスを呼び出したりすることによって、モデルの能力を活用できます。購読ではサービスのように明示的な出力は返されません。ただし、購読はスレッドセキュリティコンテキストがアクセスできるモデル内に、その他のサービスを呼び出すことはできます。購読のスレッドセキュリティコンテキストは、発生したイベントと同じスレッドセキュリティコンテキストに設定されます。サービスの実装に使用されているものと同じ JavaScript 編集環境を使用できます。
購読には定義済みの入力があり、これはイベントによって発行されるデータパケットで、イベントデータと呼ばれます。エンティティが定義済みのイベントを購読している場合、イベントデータは購読関数に渡されます。イベントデータはイベント データシェイプによって定義されます。購読の実装内で、イベントから渡されたデータはスクリプト関数への入力として機能します。たとえば、あるエンティティが Thing プロパティデータ変更イベントを購読している場合、その購読スクリプト関数が呼び出されます。その結果、Thing プロパティ値が、イベントからのその他の関連データとともにイベントデータの一部としてこの関数に渡されます。
多数のエンティティが同じイベントを購読できます。各エンティティはイベントデータが渡された購読への呼び出しを受信します。エンティティは、ソリューションの要件を満たすために必要なあらゆる操作を購読スクリプトから実行できます。
別のサービスから呼び出されるサービスを使用するよりも、この手法の方が有利な点には、以下があります。
イベントを 1 つまたは多数の購読によって購読できること。
イベントがシステムのアクティビティに基づいて呼び出され、ユーザーの操作が不要であること。
イベントが複数の Thing によって購読される場合は、複数のサービスを連携する代わりに、購読を使用できます。
* 
ThingWorx バージョン 8.4.0 以降では、同じ Thing で定義されている同じイベントの複数購読、つまり重複する購読がサポートされています。
複数購読
8.4.0 より、購読には一意の識別子としてユーザー定義の名前が付けられます。エンティティは、Thing のイベントを複数購読できます。たとえば、あるエンティティで「モーターが過熱している」というイベントが発生した場合、それは「モーターをオフにする」という購読と「作業命令書を作成する」という購読の両方によってそのイベントを購読できます。これにより、メンテナンスでエンジンが点検されます。そのイベントに対して、任意の数のほかの購読を作成することもできます。
Thing Template または Thing Shape によってあるイベントの購読が実装されている場合、その Thing Template または Thing Shape を使用する Thing も同じイベントの購読を作成でき、これらのイベントの発生時に追加の操作を行う次善策は必要ありません。