複数のデバイスで非同期サービスを同時に呼び出す場合は、IoT Platform コンソールでバッチプロパティ構成タスクを作成できます。このトピックでは、バッチサービス呼び出しタスクを作成し、タスクに関する情報を表示する方法について説明します。 また、タスクの実行中に使用されるトピックと対応するメッセージ形式についても説明します。
前提条件
呼び出したい非同期サービスを持つデバイスが属するプロダクトに対して、Thing Specification Language(TSL)モデルが定義されており、非同期サービスは同じ識別子を持っている必要があります。 詳細については、「TSL 機能を一括追加する」をご参照ください。
デバイスに対して TSL サービス呼び出し機能が構成されています。 詳細については、「概要」をご参照ください。
タスク管理プロセス
バッチサービス呼び出しタスクを作成します。
- IoT Platform コンソールで、管理するインスタンスを見つけ、インスタンス名をクリックします。 [インスタンスの詳細] ページの左側のナビゲーションウィンドウで、 を選択します。 [タスク] ページで、[タスクの作成] をクリックします。
[タスクの作成] ページで、[タスクの作成] と [タスクの構成] の手順で表示されるパラメーターを構成し、[完了] をクリックします。 パラメーターに関する情報を表示するには、パラメーターの横にある
アイコンにポインターを移動します。 次の表にパラメーターを示します。
タスクの作成
パラメーター
説明
タスク名
タスクの有効な名前を指定します。 カスタム名を指定できます。
タスクタイプ
パラメーターを [バッチサービス呼び出しタスク] に設定します。
タスクの説明
タスクの目的などの情報を指定します。これはタスクを識別するために使用できます。
宛先デバイス、プロダクト、またはグループ
タスクを実行するデバイスを選択します。 個別のデバイス、プロダクト別のデバイス、またはグループ別のデバイスを選択できます。重要 グループ別にデバイスを選択する場合、動的グループは選択できません。デバイスに発行されるタスク実行ルール
ルールファイルをアップロードします。 ファイルは
JSON
形式である必要があり、サイズは 64 KB を超えることはできません。[テンプレートのダウンロード] をクリックしてルールテンプレートを取得できます。
次のサンプルコードは、名前が データコンピューティング で、[識別子] が Operation_Service で、[呼び出しメソッド] パラメーターが [非同期] で、入力パラメーターが [int32] データ型の と である TSL サービスを定義しています。
{ "serviceIdentifier": "Operation_Service", "params": { "NumberA": 32, "NumberB": 56 } }
serviceIdentifier: サービスの一意の識別子を指定します。 デバイスのサービス識別子を表示するには、IoT Platform コンソールで、デバイスが属するプロダクトの [機能の定義] タブに移動します。
識別子が
Operation_Service
であるサービスがtestFb
という名前のカスタムモジュールに属している場合は、キーと値のペアを"serviceIdentifier": "testFb:Operation_Service"
に設定します。 カスタムモジュールはデフォルトモジュールではありません。params: サービスの入力パラメーターを指定します。 params には複数の入力パラメーターを構成できます。
- タスクの構成
パラメーター 説明 タスク実行レート ビジネス要件に基づいて、1 分あたりにタスクをプッシュする回数を指定します。 このパラメーターは必須です。 タスク実行タイムアウト期間 このパラメーターは、カスタムタスクでのみ使用できます。 このパラメーターを構成する必要はありません。 タスクスケジュール時間 このパラメーターはオプションです。 システムは、[タスクスケジュール時間] パラメーターに指定した時間の後、特定の期間にタスクを実行します。
タスクを作成した後、システムはタスクを開始しますが、実行時間が経過するまでタスクを実行しません。
タスクを作成した後、IoT Platform は InvokeThingService または InvokeThingsService 操作を呼び出してサービスを呼び出し、指定されたデバイスにリクエストを非同期的にプッシュします。 次に、デバイスは IoT Platform に非同期的にレスポンスを返します。
サンプルメッセージ:
{ "id": "123", "version": "1.0", "params": { "Power": "on", "WF": "2" }, "method": "thing.service.${tsl.service.identifier}" }
params には、ルールファイルの params と同じデータが含まれています。
{tsl.service.identifier}
には、ルールファイルの serviceIdentifier と同じ値が含まれています。 この例では、次のメッセージが使用されます。{ "id": "123", "version": "1.0", "params": { "NumberA": 32, "NumberB": 56 }, "method": "thing.service.Operation_Service" }
Alink プロトコルの対応する使用上の注意については、「非同期モードでデバイスサービスを呼び出す」をご参照ください。
- IoT Platform コンソールで、タスクが属するインスタンスを見つけ、インスタンス名をクリックします。 [インスタンスの詳細] ページで、 を選択します。 [タスク] ページで、作成したタスクのステータスを含む関連情報を確認できます。重要 タスクが [タイムアウト] 状態の場合、指定されたスケジュールに基づいてタスクを実行できなくなります。
タスクのサブタスクが、タスクの作成後 7 日以内に実行に失敗した場合、タスクは [タイムアウト] 状態になります。
ビジネス要件に基づいて、次の操作のいずれかを実行できます。
- [タスク] ページで、[処理中] 状態のタスクをキャンセルします。
- 管理するタスクを見つけ、[アクション] 列の [表示] をクリックします。 タスクの詳細ページで、タスク情報とタスク統計を表示します。
タブ 説明 [タスク情報] タスク情報を表示し、タスクの説明とタスク構成を変更し、ルールファイルをダウンロードできます。 [タスクサマリー] ステータス別のサブタスクの統計を表示できます。 - 管理するデバイスを見つけ、[表示] をクリックして [デバイスの詳細] ページに移動します。
- [タスク] タブで、デバイスのすべてのタスクを表示できます。
- [デバイスログ] タブで、[表示] をクリックします。 [デバイスログ] ページで、[クラウド実行ログ] をクリックします。 [クラウド実行ログ] タブで、検索バーのワークロードタイプドロップダウンリストから [クラウドからデバイスへのメッセージ] を選択して、タスク関連のログを表示します。
- サブタスクの実行に失敗した場合は、[アクション] 列の [実行の詳細] をクリックして、失敗の原因を表示します。
- サブタスクがタイムアウトしたか、実行に失敗した場合は、[ステータス] 列の [タイムアウト] または [失敗] をクリックして、対応する状態のサブタスクを表示します。
[タスク] ページの上部にある [再実行] をクリックして、現在のタスクの [タイムアウト] および [失敗] 状態にあるサブタスクを再実行します。
- 管理するデバイスを見つけ、[表示] をクリックして [デバイスの詳細] ページに移動します。
- タスクの [アクション] 列の [削除] をクリックします。 表示されるメッセージで、[OK] をクリックします。警告 タスクを削除すると、タスクに関連するすべてのデータが削除されます。 ビジネスアプリケーションがタスクに基づいて実行されている場合、アプリケーションが使用できなくなり、ビジネスに影響を与える可能性があります。 慎重に行ってください。