ファイル転送サブシステム
ファイル転送サブシステムは、Remote Thing、ファイルリポジトリ、フェデレーションサーバー間のファイル転送を管理するために必要な手段を提供します。
特に指定されていないかぎり、エッジクライアントと ThingWorx Platform 間でファイル転送を行うには、転送の開始から完了までクライアントが接続した状態である必要があります。キュー可能な機能を使用してコピーを実行するよう ThingWorx Platform に命令することによって、エッジクライアントが切断されている状態で ThingWorx Platform からファイル転送を開始できます。キュー可能なファイル転送はオフラインキューに配置され、エージェントが接続されたときに実行されます。
* 
PostgreSQL を永続化プロバイダとして使用している場合、ThingWorx 高可用性のフェイルオーバーをサポートするためにオフラインキューが永続化されます。
転送が開始された後はエッジクライアントを切断できません。切断した場合、転送が失敗します。「キューが可能なファイル転送の有効期間 (秒)」コンフィギュレーション設定の値が経過しても、キューに入っているファイル転送が開始しない場合、そのファイル転送は期限切れになります。
通常は、ファイル転送は ThingWorx Platform によって制御されます。ただし、エッジ制御ファイル転送が可能であり、これはファイル転送に関連する Remote Thing に EdgeControlled Thing Shape を追加することによってアクティブ化します。エッジ制御ファイル転送では、ThingWorx Platform 上で転送元または転送先が FileRepository Thing として設定されている必要があります。エッジ制御ファイル転送では、転送はエッジクライアントによって制御されます。エッジによって、ファイル転送の進行に伴ってそのタイムスタンプを更新する Touch サービスが呼び出されます。これが行われない場合、ThingWorx Platform でファイル転送がタイムアウトします。その転送が成功したかエラーで終了したかがエッジによって示されます。
ファイル転送を開始するときに、metadata パラメータを指定することでコンテキストを埋め込むことができます。このフィールドは JSON オブジェクトであり、これは任意の JSON を含むことができます。一部の基本機能では、ThingWorx Platform でこのフィールドを使用してエッジクライアントに追加の命令を入力します。このような転送では、metadata フィールド内の情報が ThingWorx Platform 以外のプロセスによって修正されてはなりません。
フェデレーションサーバー間のファイル転送
フェデレーションサーバー間でファイルを転送するには、次の操作を行います。
1. ThingWorx ServerA と ThingWorx ServerB の間に フェデレーションを設定します。詳細については、 フェデレーションの設定を参照してください。
2. FileRepository Thing Template を使用して、ThingAServerA に追加します。
a. ThingA「パブリッシュ」チェックボックスをオンにして、ほかの ThingWorx サーバーからアクセスできるようにします。
3. RemoteThingWithFileTransfer Thing Template を使用して、RemoteThingAServerB に追加します。
a. 「識別子」フィールドに、ThingA@ServerA と入力します。
4. ServerBSystemRepository ルートフォルダに、ファイル (たとえば、test.txt) をコピーします。
5. ServerBFileTransferSubsystem を開き、次のパラメータ値を使用して copy サービスを実行します。
sourceRepo: SystemRepository
sourcePath: /
sourceFile: test.txt
targetRepo: RemoteThingA
targetPath: /
targetFile: test.txt
その他のパラメータはデフォルト値から変更しないでください。
6. ServerA/ThingworxStorage/repository/ThingA フォルダに移動して、そこに test.txt ファイルが正しくコピーされていることを確認します。
コンフィギュレーション
ファイル転送の設定
データ型
デフォルト
注記
ファイル転送プールに割り当てられた最小スレッド数
NUMBER
10
ファイル転送プールに割り当てられた最大スレッド数
NUMBER
10
ThingWorx が停止した場合、非同期のファイル転送は失われる可能性があります。たとえば、この設定のデフォルト値は 10 であり、実行に時間がかかる 50 個のファイル転送がサブミットされているとします。ThingWorx が停止した場合、40 個は失われます。
新しい作業スレッドの追加前におけるキューの最大エントリ数
NUMBER
100
同時に実行可能なアクティブな転送の最大数。
アイドルスレッドのタイムアウト (秒)
NUMBER
600000
ファイル転送アイドルタイムアウト (秒)
NUMBER
30
最大ファイル転送ブロックサイズ (バイト)
NUMBER
128000
この変数によって、システムレベルでのファイル転送中の最大ブロックサイズを指定します。EMS のコンフィギュレーションが優先されますが、この変数で設定されているサイズよりも EMS で設定されているバッファサイズの方が大きい場合、この変数の値がこのブロックサイズの上限になります。EMS でこれより大きいブロックサイズ (128 KB) が設定されている場合、この変数の値を増やす必要があります。最大コンパイルレベルは 1 MB です。
最大ファイル転送サイズ (バイト)
NUMBER
100000000
ソースファイルがこの値より大きい場合、転送は失敗し、エラーメッセージが表示されます。
オフラインキューで許可する最大ファイル転送数
NUMBER
50000
オフラインキューで 1 つの Thing に許可する最大ファイル転送数
NUMBER
10
キューが可能なファイル転送の有効期間 (秒)
NUMBER
86400
ここで指定した時間が経過すると、ファイル転送がオフラインキューから除去されます。
許可されているエッジ制御ファイル転送の最大数
NUMBER
500
プラットフォーム全体で同時に実行されるエッジ制御転送の総数。転送数の範囲は 1-1000 です。これは許可されている常時オンの転送の最大数とは別の設定です (これは「新しい作業スレッドの追加前におけるキューの最大エントリ数」設定によって制御されます)。
1 つの Thing に許可されているエッジ制御ファイル転送の最大数
NUMBER
2
エッジ制御 Thing との間で許可される同時転送の最大数。転送数の範囲は 1-100 です。たとえば、この値が 2 の場合、1 つのエッジ制御 Thing が同時に持つことができるアクティブな転送 (アップロードまたはダウンロード) は 2 つだけです。ファイル転送イグレスをデキューするよう求める以降のリクエストは容量が確保されるまで却下されます。
エッジ制御ファイル転送のアイドルタイムアウト (秒)
NUMBER
600
処理 (データ転送やジョブ状態更新など) が行われずにアクティブなジョブがアクティブな状態を維持できる最大時間。この範囲は 1-3600 秒です。これは常時オン転送ジョブのアイドルタイムアウトとほぼ同じですが、通常はポーリングデバイスの ping サイクルの分が長くなります。