この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

checkRetrieveStatus()

宣言的なメタデータコール retrieve() の状況を確認し、zip ファイルのコンテンツを返します。

構文

すべての API バージョン:

1RetrieveResult = metadatabinding.checkRetrieveStatus(ID id);

API バージョン 34.0 以降では、このコールで省略可能な includeZip boolean パラメータを取ります。

1RetrieveResult = metadatabinding.checkRetrieveStatus(ID id, boolean includeZip);

使用方法

checkRetrieveStatus() を使用して、メタデータ retrieve() 操作の進行状況を確認します。このメソッドが返す RetrieveResult オブジェクトは、非同期 retrieve() コールが完了したタイミングを示します。取得が完了している場合、RetrieveResult には zip ファイルコンテンツが含まれます。retrieve() コールを使用してメタデータコンポーネントを取得するには、次のプロセスを使用します。

  1. retrieve() コールを発行し、非同期的な取得を開始すると、AsyncResult オブジェクトが返されます。id 項目の値をメモし、次のステップで使用します。
  2. checkRetrieveStatus() コールを発行して、最初のステップの AsyncResult オブジェクトから id 値を渡します。返された RetrieveResultdone 項目の値をチェックします。true の場合、コールが完了して、次のステップに進むことを意味します。それ以外の場合は、done 項目が true になるまで、このステップを繰り返して checkRetrieveStatus() を再度コールします。
  3. 前のステップの checkRetrieveStatus() への最後のコールで返された RetrieveResult から zip ファイル (zipFile 項目) および他の必要な項目を取得します。

API バージョン 31.0 以降では、retrieve() コールを実行するプロセスが簡略化されました。取得操作の状況を取得する場合、retrieve() をコールしてから checkStatus() をコールする必要がなくなりました。代わりに、checkRetrieveStatus() のみをコールします。取得操作が進行中の場合、取得操作が完了するまで checkRetrieveStatus() を再コールします。checkStatus() コールは、API バージョン 30.0 以前では引き続きサポートされますが、API バージョン 31.0 以降では使用できません。

2 番目のプロセスでの Zip ファイルの取得

デフォルトでは、checkRetrieveStatus() は、取得が完了すると (RetrieveResult.isDone() == true)、この操作に対する最後のコールで zip ファイルを返してサーバから zip ファイルを削除します。削除後、後続の checkRetrieveStatus() へのコールで同じ取得操作を行っても zip ファイルは取得できません。API バージョン 34.0 以降、2 番目の boolean パラメータを checkRetrieveStatus() に渡して、zip ファイルを取得するかどうかを指定できます。こうすることで、取得操作の完了後に別のプロセスでファイルを取得できます。true を boolean パラメータに渡して zip ファイルを取得した後、zip ファイルはサーバから削除されます。たとえば、バックグラウンドファイル転送サービスは checkRetrieveStatus(id, true) をコールして zip ファイルを取得できます。このサービスは、ループで checkRetrieveStatus(id, false) をコールして取得状況をポーリングするもう 1 つのプロセスとは別個のものです。

1// First process: Poll the retrieval but don’t retrieve the zip file.
2AsyncResult asyncResult = metadataConnection.retrieve(retrieveRequest);
3String asyncResultId = asyncResult.getId();
4// Wait for the retrieve to complete
5int poll = 0;
6long waitTimeMilliSecs = ONE_SECOND;
7RetrieveResult result = null;
8do {
9    Thread.sleep(waitTimeMilliSecs);
10    // Check the status but don’t retrieve zip file.
11    result = metadataConnection.checkRetrieveStatus(asyncResultId, false);
12} while (!result.isDone());
13
14// Second process: Retrieve the zip file.
15// For example, this process can be a background file transfer service.
16// Retrieve the zip file.
17result = metadataConnection.checkRetrieveStatus(asyncResultId, true);
18// Get the zip file from the RetrieveResult (result) variable
19if (result.getStatus() == RetrieveStatus.Succeeded) {
20    ByteArrayInputStream bais = new ByteArrayInputStream(result.getZipFile());
21    // ...
22}

サンプルコード —Java

このコールの使用例は、retrieve() のサンプルコードを参照してください。

引数

名前 説明
id ID retrieve() コールによって返される AsyncResult オブジェクト、または checkRetrieveStatus() コールによって返される後続の RetrieveResult オブジェクトから取得した ID。
includeZip boolean 省略可能。zip ファイルを取得するには、true に設定します。取得操作の完了後にのみ zip ファイルを取得できます。zip ファイルを取得した後、zip ファイルはサーバから削除されます。zip ファイルの取得を試行せずに取得の状況をチェックするには、false に設定します。省略すると、この引数はデフォルトの true に設定されます。つまり、取得が完了すると、checkRetrieveStatus() に対する最後のコールで zip ファイルが取得されます。

この引数は API バージョン 34.0 以降で使用できます。