2022/04/14

Salesforceにおけるretrieveとは?詳細や注意点について分かりやすく紹介します!

 
  

Salesforceにおけるretrieveとは?

retrieveとは、Salesforce内でretrieve()コールを使い、オブジェクトから個別のレコードを取得することです。 例えば、クライアントアプリケーションについていうと、「取得する項目」「オブジェクト」「取得するレコードIDの配列」を渡します。削除されたレコードを返しません。 例)
sObject[] result = connection.retrieve(string fieldList, string sObjectType, ID ids[]);

Salesforceにおけるretrieveの概要

Salesforceでのretrieveの使われ方について、概要を説明します。 「retrieve()コール」を使うときは、取得するレコードのIDが事前にわかっている場合です。もしIDが不明な場合、他の選択条件を指定する場合は、「retrieve()」の代わりに「query()」を使用します。 クライアントアプリケーションの場合、「retrieve()」を使うことで、クライアント側で結合を実行できます。「query()」を実行して、「Opportunityレコード」を取得し、返されたレコードを反復処理します。 また、「accountId」を取得し、「retrieve()コール」することで、「accountId」のアカウント情報を取得できます。

retrieveについて

retrieveは、「バッチ・プログラム」と「BMPプログラム」でデ ータベース内の現在位置を判別するために使われます。 シンボリック・チェックポイント・コマンドを出す場合、拡張retrieveまたは retrieveも出す必要があります。retrieveはプログラムの開始時に出されます。プログラムを正常に開始させたり、異常終了時に再始動させられます。 retrieveは、特定のチェックポイントIDまたは時刻/日付スタンプから使用できますが、retrieveがデータベースの位置変更を行うために、位置が正しいかどうか確認しなければなりません。 例)
>>-EXEC--DLI--RETRIEVE--USING PCB(expression)------------------->

>--KEYFEEDBACK(area)-- FEEDBACKLEN(expression)-----------------><

retrieveの制約事項

retrieveコマンドには制約事項があります。 CICSプログラムではretrieveコマンドは使用できません。retrieveコマンドを使用するときは、初めにプログラムの入出力PCB定義をする必要があります。さらに、非ユニーク・キーをもつセグメントもしくはキーなしセグメントにおいて、位置の再設定ができません。 retrieveコマンドにおいては、システム・ログが直接アクセス・ストレージに記憶されます。そのため、動的バックアウトが指定されていない限り使えません。プログラムを実行する場合でも、JCLのパラメーター・フィールドにBKO=Yを指定する必要があります。

retrieveと無名変数

無名変数におけるretrieveの使われ方について説明します。 変数は英数字の大文字で始まる文字列だけでなく、アンダーラインで始まる文字列も同じく変数となります。そのなかでも、アンダーラインだけの変数は「無名変数」と呼ばれており、プログラム上において、その変数の値が不用の場合に使われます。 下記例のように、最初に変数Lsが使われているのは1か所だけです。次の変数Yも同様です。Prolog処理系からすると、これらの変数に名前を付ける必要がないのですが、このような場合でも無名変数が使えます。 例)
retrieve(1,  [X | Ls], X).
retrieve(N, [Y | Ls], X) :-
    N > 1, N1 is N - 1, retrieve(N1, Ls, X).

SQLJ実行文でのretrieveの使われ方

SQLJ実行文内でretrieveがどのように使われているか説明します。 SQLJ実行文は「#sqlトークン」と、後に続くSQLJ句で構成されるものです。 SQLJ実行文の埋込みSQL操作については、JDBCドライバでサポートされる、任意のSQL操作にできます。 例)
void runExample() throws SQLException {

     System.out.println( ""Running the example--"" );

     Float salary;
     String empname;

      #sql { SELECT first_name, salary INTO :empname, :salary FROM employees
             WHERE employee_id = 7499 };

     System.out.println(""Name is "" + empname + "", and Salary is "" + salary);
  }
} 

retrieveを使ったダウンロード

retrieveの[Output]タブを使って、ファイルのダウンロード先やファイル形式、命名を設定できます。 retrieveでのダウンロードを理解するために、使用可能なファイル形式を確認しておきましょう。 retrieveでサポートされているファイル形式は4つです。各ファイル形式で完了証明書の添付が有効か無効かを指定できます。 また、どのダウンロードオプションでも、ダウンロード内容のCSVファイルが入っています。 [Output Columns]タブでの設定によって、CSVファイルに記載される情報は違ってきます。 ダウンロード先のフォルダ内は、[Date Range]と[Envelope Filters]タブで指定した条件を満たした項目が全て、保存されます。

retrieveコードターゲットの使用について

Salesforceにおける「retrieveコードターゲット」の使い方を説明します。 「Sandbox」または本番組織からクラス、トリガを取ってくるには、retrieveコードターゲットを使う必要があります。 通常のリリースサイクル中、新しいクラスとトリガに使う正しいディレクトリ構造の取得のためには、「deploy」の前に「retrieveコード」を実行します。ただし、「取得するものがある」ということを確認するためには、「deploy」が始めに使われなければなりません。 ファイルcodepkg/package.xmlの場合、取得される「メタデータコンポーネント」をリストします。取得されたファイルは「ディレクトリcodepkg」に置かれて、ディレクトリ内に存在するものは全て、上書きされます。

retrieve()コールについて

Salesforceにおける「retrieve()コール」の使用例について説明します。 「retrieve()コール」は、組織内のコンポーネントの「XMLファイル表現」が取得できます。 APIバージョン31.0以降、「retrieve()コール」を実行するプロセスが簡略化されています。取得操作の状況を取得する場合に、「retrieve()」をコール後、「checkStatus()」をコールしなくてもよくなりました。その代わり、「checkRetrieveStatus()」のみのコールが必要です。 例)
AsyncResult = metadatabinding.retrieve(RetrieveRequest retrieveRequest)

Salseforceにおけるretrieveを理解しよう

今回は、Salesforceおける「retrieve」の使われ方について紹介しました。 本文中で「retrieve」の使用方法を具体的に説明してきましたが、「retrieve」の使用方法を正しく理解し、転職活動に活かしていきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】