Thing の存在のカスタムストラテジー: これを使用する Thing の作成
新規のストラテジー Thing を作成した後で、拡張機能を構築してそのままインポートすることで、このストラテジーを ThingWorx Platform 内のこれらの Thing のレポートコンフィギュレーションテーブルから Remote Thing に適用できます。
または、作成する Thing がある場合、拡張機能内から Thing を作成し、これらの新規ストラテジーを事前に適用できます。このプロセスは、作成済みの以前のストラテジー Thing と似ています。<プロジェクトルート>/Entities/Things フォルダ内に新規の Thing ファイルが必要になります。たとえば、名前が "RemoteThingWithJavaStrategy" である場合、ファイル名は Things_RemoteThingWithJavaStrategy.xml となり、コンテンツは以下に示すようになります。
前の例と同様に、ホームマッシュアップ、Thing 名などを指定する行を編集しなければなりません。さらに、レポートストラテジーを設定する行を編集して、カスタムストラテジー Thing の名前を反映する必要があります。
Java ストラテジーを実装する Thing の例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<Entities
build="latest"
majorVersion="0"
minorVersion="0"
modelPersistenceProviderPackage="H2PersistenceProviderPackage"
revision="0"
schemaVersion="1040"
universal="">
<Things>
<Thing
description=""
documentationContent=""
effectiveThingPackage="RemoteThing"
enabled="true"
homeMashup=""
identifier=""
lastModifiedDate="2018-08-17T15:35:54.051Z"
name="RemoteThingWithJavaStrategy"
projectName=""
published="false"
tags=""
thingTemplate="RemoteThing"
valueStream="">
<ConfigurationTables>
<ConfigurationTable
description="Reporting Settings"
isMultiRow="false"
name="ReportingConfiguration"
ordinal="0">
<DataShape>
<FieldDefinitions>
<FieldDefinition
aspect.defaultValue="AlwaysOnReporting"
aspect.isPrimaryKey="true"
aspect.isReadOnly="false"
aspect.thingTemplate="ReportingStrategy"
baseType="THINGNAME"
description="Strategy to determine health"
name="reportingStrategy"
ordinal="0"/>
</FieldDefinitions>
</DataShape>
<Rows>
<Row>
<reportingStrategy><![CDATA[CustomStrategyJava]]>
</reportingStrategy>
</Row>
</Rows>
</ConfigurationTable>
</ConfigurationTables>
</Thing>
</Things>
</Entities>
ストラテジーの実行
ThingWorx 8.4.0 では、ThingWorx Platform から Thing がバインドまたはバインド解除されると必ず、Remote Thing の "isReporting" 状態が再評価されます。Remote Thing で使用可能な EvaluateReporting サービスを実行することで、Remote Thing の "isReporting" 状態を任意のタイミングで (タイマーなどによって) 再評価することもできます。