Salesforceのカスタム設定がかなり使えるので書いてみる。
まず、Salesforceのカスタム設定には、リスト形式と階層形式の2種類が存在する。
リスト形式は他オブジェクトと関連付けることが出来ないこと以外は、
通常のオブジェクトと同じような機能をもっており、
カスタム設定の機能であるSOQLのコストをかけずに設定レコードを取得したり
データをキャッシュすることができるもので、ApexやAPI経由でのみ利用することが可能。
一方、階層形式は組織・ユーザ・プロファイル毎に定義することが出来る設定値で
通常のオブジェクトと同じような振る舞いをするリスト形式と異なり、
あるユーザが取得できるカスタム設定は1レコードのみになる。
ユーザが決定されると、取得できるレコードが1つに決まるため、
こちらはApex、API経由以外に数式(カスタム項目、入力規則、ワークフロールール)や
Visualforceページ単体(Apexページで値を明示的に値を取得する必要がない)でも利用が可能。
「使える」方はこの階層形式の方なので、こちらの具体的な利用方法について書いてみる。
1. バッチ実行サイズや変更の可能性のある固定値をSalesforce上に持たせたい場合
→変更の可能性のある固定値を「組織のデフォルト値」に持たせれば、変更があった時も開発の必要がない。(設定値を変更するだけでOK)
他にも消費税等を数式で「*0.05」とハードコーディングする必要がなくなり、
数式に利用している変更しうる固定値を定義・利用することが可能。
VFページ内では「$Setup.~」の形式で書けばそのまま利用できるのも利点で、
JavaScriptで利用したい固定値をApexクラスのプロパティ値無しに定義できる。
2. プロファイル・ユーザによってVisualforceページや数式の見せ方を変更したい場合
→例えばある特定ユーザ・プロファイルの条件を満たすユーザのVFページの表示・非表示を切り替える等という要件があり、
さらにその条件がフレキシブルに変更可能にしないといけない場合に利用できる。
また、カスタム設定を使用した数式項目をレポートやリストビューに組み込むことで
ユーザやプロファイルを横断したグループ毎に、レポートの見せ方を変えることが出来る。
このように、開発でもカスタマイズでも様々な恩恵がある。
特に開発者にとってはVFページ等で変更の都度、コントローラ・テストクラスの修正とデプロイ作業をするという手間を
カスタム設定の利用で削減できる可能性があるのは大きな魅力と言える。
また、Salesforceの旨味を殺さないための、
「カスタマイザブル」な実装設計にするためにもカスタム設定を利用することは重要かと。
カスタマイズでも数式項目やWF、カスタムボタンのURLパラメータ等の固定値を
一箇所に集束させることによる保守面でのメリットは大きい。
ということで、salesforceを導入されている皆さん、カスタム設定(階層)を使いましょう!