カスタム設定を作成して取得してみる

カスタム設定、というカスタムオブジェクトの一種でSOQLいらずでもっと手軽に扱える カスタム設定 とうものを知ったので、
作り方から使い方を調べてみた。

カスタム設定はカスタムオブジェクトと類似しており、アプリケーション開発者は、カスタムデータセットの作成の他に、組織、プロファイル、または特定のユーザに対しカスタムデータを作成して関連付けることができます。
https://help.salesforce.com/HTViewHelpDoc?id=cs_about.htm&language=ja

今回は全体で使用する、環境変数、としてカスタム設定を作成してみた。

作成

[開発] → [カスタム設定] にアクセス。
まずは新規でカスタム設定、を作る。
オブジェクトのようなもの。

今回は以下のように作成した。

項目 内容
表示ラベル 環境変数
オブジェクト名 EnvironmentVars
設定種別 リスト
表示 公開
説明

設定種別は、リスト、と、階層、があり、
階層、は、ユーザーやプロファイルごとに同じ項目で違う値を設定したり出来るよう。
どのユーザーが使用しているかによって変数の値を変更できるようになるので、
そういうことを実現したい時に便利っぽい。
今回は全員同じにしたいので、リスト、にしておいた。

また、表示、は、公開・保護、とある。
公開、だとSOAP APIでも取得できるようになったり、とオープンな状態?になるよう。
特に秘匿する内容でもないので、公開、にしておいた。

次に作成したカスタム設定内にカスタム項目を追加する。
作成したカスタム設定から、新規、をクリック。

通常の項目作成と同じ流れで、型を選択し、内容を埋めていく。
今回は以下のように作成した。
目的としては、SitesのURLを環境変数として持っておくためのもの。

項目 内容
テキスト
項目の表示ラベル Sites
文字数 255
項目名 Sites
説明、など

ここまででオブジェクトと項目が作成出来たので、実際にデータを入れていく。
作成したカスタム設定のManegeをクリック。

リストが表示されるので、新規、をクリック。

内容を記入して保存。

取得

作成したデータをApexで取得する。

前述の通り、取得の際にはSOQLを発行する必要がなく、以下のようにメソッドレベルで取得可能。

1
2
3
4
5
6
Map<String, EnvironmentVars__c> settingMap = EnvironmentVars__c.getAll();

for (String key : settingMap.keySet()) {
    EnvironmentVars__c env = settingMap.get(key);
    System.debug('**DEBUG** ' key + ' / ' + env.SitesURL__c);
}

まとめ

SOQLを発行しないので、ガバナ的にも優しく、内容はキャッシュされるので動作も高速。
環境変数のように決まった値であれば便利に使えるかもしれない。

参考

カスタム設定へのアクセス
Salesforce Apex カスタム設定 | odekakeshimasyo.io

   このエントリーをはてなブックマークに追加