カスタム設定
カスタム設定はカスタムオブジェクトに類似しています。アプリケーション開発者は、カスタムデータセットを作成したり、組織、プロファイル、または特定のユーザのカスタムデータを関連付けたりできます。すべてのカスタム設定データはアプリケーションキャッシュで公開されます。これにより、データベースへのクエリを繰り返し行うコストをかけずに、効率的なアクセスを実現します。これで、数式項目、入力規則、フロー、Apex、SOAP API でこのデータを使用できます。
次の 2 種類のカスタム設定があります。
- リストカスタム設定
- 組織全体からアクセスできる再使用可能な静的データセットを提供するカスタム設定の種類。アプリケーション内で特定のデータセットを頻繁に使用する場合は、そのデータをリストカスタム設定に含めることにより、アクセスが簡素化されます。リスト設定に含まれるデータが、プロファイルやユーザごとに異なるということはなく、組織全体で利用できます。リストデータの例には、2 文字の州の省略名、国際電話の発信番号、製品のカタログ番号などがあります。データはキャッシュされるため、アクセスのコストが低く、効率的です。ガバナ制限の対象となる SOQL クエリを使用する必要はありません。
- 階層カスタム設定
- 特定のプロファイルまたはユーザの設定を「カスタマイズ」できる組み込みの階層ロジックを使用するカスタム設定の種類。階層ロジックでは、現在のユーザの組織、プロファイル、およびユーザ設定を確認し、最も限定的な (つまり「最下位」) 値が返されます。階層では、組織の設定はプロファイル設定によって上書きされ、プロファイル設定はユーザ設定によって上書きされます。
カスタム設定の使用例を次に示します。
- 納入アプリケーションには、ユーザが海外配信用の国コードを入力する必要があります。この場合、すべての国コードのリスト設定を作成すると、ユーザはデータベースに照会しなくてもこのデータにすばやくアクセスできます。
- アプリケーションによって、取引先の場所、最適な経路、および交通状況が表示されます。この情報は営業担当者には便利ですが、取引先担当責任者には取引先の場所がわかれば十分です。この場合、経路と交通のカスタムチェックボックス項目を使用した階層設定を作成すると、このデータを「営業担当者」プロファイルのみに有効にできます。
カスタム設定を作成するには、Salesforce ユーザインターフェースで [設定] から、[クイック検索] ボックスに「カスタム設定」と入力し、[カスタム設定] を選択します。カスタム設定を作成して項目を追加したら、詳細ページで [管理] をクリックしてカスタム設定にデータを入力します。名前を使用して各データセットを識別します。
たとえば、テキスト項目「Country_Code__c」を含む「Foundation_Countries__c」という名前のカスタム設定がある場合、データセットは次のようになります。
| データセット名 | 国コード項目値 |
| アメリカ | USA |
| カナダ | CAN |
| イギリス | GBR |
また、カスタム設定をパッケージに含めることもできます。パッケージのカスタム設定がどのように表示されるかは、[表示] 設定によって決まります。
Apex は、リストと階層のどちらのカスタム設定にもアクセスできます。
リストカスタム設定へのアクセス
次の例では、カスタム設定データの対応付けが返されます。getAll メソッドは、リスト設定に関連付けられているすべてのカスタム項目の値を返します。
1Map<String_dataset_name, CustomSettingName__c> mcs = CustomSettingName__c.getAll();次の例では、指定したデータセットに関連付けられているすべての項目値を返す getValues メソッドを使用します。このメソッドは、異なるパラメータを使用して、リストと階層のどちらのカスタム設定でも使用できます。
1CustomSettingName__c mc = CustomSettingName__c.getValues(data_set_name);階層カスタム設定へのアクセス
次の例では、組織レベルのデータセット値を返す getOrgDefaults メソッドを使用します。
次の例では、指定したプロファイルのデータセット値を返す getInstance メソッドを使用します。getInstance メソッドは、ユーザ ID で使用することもできます。
1CustomSettingName__c mc = CustomSettingName__c.getOrgDefaults();1CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);