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

checkRetrieveStatus()

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

構文

API バージョン 34.0 以降の場合:

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

API バージョン 33.0 以前の場合:

1RetrieveResult = metadatabinding.checkRetrieveStatus(ID id);

使用方法

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 以降、checkRetrieveStatus()includeZip 引数に boolean 値を渡して、zip ファイルを取得するかどうかを指定します。includeZip 引数により、取得操作の完了後に別のプロセスでファイルを取得できます。たとえば、あるサービスがループで checkRetrieveStatus(id, false) をコールして取得状況をポーリングします。このコールは、取得操作の状況を返しますが、zip ファイルは取得しません。取得操作の完了後、バックグラウンドファイル転送サービスなどの別のプロセスが checkRetrieveStatus(id, true) をコールして zip ファイルを取得します。この最後のコールにより、zip ファイルがサーバーから削除されます。

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 に設定します。null に設定すると、この引数はデフォルトの true に設定されます。つまり、取得が完了すると、checkRetrieveStatus() に対する最後のコールで zip ファイルが取得されます。

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