Рассмотрим Сustom settings и Сustom metadata объекты и их свойства, чтобы определить разницу. Грубо говоря Сustom metadata это тот же Salesforce объект со своими Custom Fields, Validation Rules, Page Layouts. И у него также есть стандартные поля (Id, Created By, Last Modified By и т. д.), как и у обычного Salesforce объекта. Обращаться к объекту Сustom metadata можно с помощью SOQL запросов.
Сustom settings — это ,можно сказать, упрощенный объект Сustom metadata, у которого присутствуют только свои собственные поля и больше ничего. Так как объект Сustom setting хранится в кэше приложения, обращаться к нему можно через специальные методы например: CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);
Так как Сustom metadata это метаданные, их можно деплоить вместе из значениями в записях, чего нельзя сделать с Сustom settings.
Для наглядности приведу таблицу отличия свойств объектов:
Свойство | Сustom settings | Сustom metadata |
---|---|---|
Место хранения | Кэш приложения | Org Data Storage |
Deployment со значениями | - | + |
Типы полей | Ограниченно количество типов | Все что у Salesforce объекта |
Page Layouts | - | + |
Validation Rules | - | + |
lookup relationship между объектами | - | + |
Метод обращения | С помощью метода (без запроса) | Через SOQL запрос |
Обновление через Managed Package | - | + |
Использование через API | - | Metadata API |
Shield Platform Encryption | - | - |
Редактирование записи через Apex | + | - |
Сustom metadata. Примеры использования.
Очень удобно использовать для хранения предустановленных пользовательских данных или настроек. Так как Сustom metadata деплоятся вместе со значениями, не нужно писать каких-либо Apex классов для заполнения значений после деплоя. Можно редактировать эти значения с помощью Managed Package из Sandbox.
Если это нужно - можно создавать Lookup relationship между объектами Сustom metadata.
Сustom metadata имеют множество дополнительных функций, характерных для разработки Managed Package. Вы можете настроить видимость и возможность редактирования полей и объектов как с помощью организации, которая устанавливает пакет, так и путем обновления пакета.
Сustom settings. Примеры использования.
При помощи Сustom settings можно варьировать значения в зависимости от пользователей и профилей в организации; это значит, что при создании объекта Сustom settings его можно назначить определенному пользователю или профилю.
На Сustom settings также можно ссылаться в формулах, поэтому их можно использовать в полях формул, validation rules, workflow rules, и visualforce. Еще Сustom settings удобно использовать в Sandbox для хранения тестовых логинов и паролей, если они не будут переноситься на продакшин.
Значения Сustom settings можно редактировать из Apex, а вот значения Сustom metadata - нет.
Если по какой-либо причине вам потребуется программно изменить конфигурацию, то с Сustom metadata у вас это не получится. Хотя на практике это можно сделать через REST Callout.