salesforce 零基础学习(四十)Custom Settings简单使用

有时候,项目中我们需要设置类似白名单的功能,即某些用户或者某种Profile的用户不走一些校验或者走一些校验,这时,使用Custom Settings功能可以很好的解决这一需求。

Custom Settings创建类似于Custom Object,但是两者用法上有一些区别:Custom Setting可以通过条件配置来区分特定的用户,或者Profile。

Custom Settings可以应用到很多场景,因为可以通过特定用户和Profile进行配置,所以设置白名单或者相反的功能很容易,除此之外还可以应用到其他场景,根据他的功能自行来使用。

Custom Setting有两种类型:

1.List Custom Settings:用于创建一组静态的数据;

2.Hierarchy Custom Settings:通过指定的Profile或者用户设置指定的数据。

两种选择上通常可以选择第二种,因为第二种用起来更加灵活,如果确定数据是固定的也可以选择第一种。

 接下来的步骤用来实现配置Custom Setting的用户不走某种校验,没有配置Custom Setting的用户需要走某种校验的功能。

一.创建步骤:

1.Setup->Build->Develop->Custom Settings,进入后选择new

2.填写基本信息后save

3.点击new按钮添加需要的字段

4.点击上图的manage,添加纪录并进行记录分配

5.分配完成,这里我们看一下下图描述,当type为List情况,选择上方的new,当type为hierarchy情况下,选择下方的new按钮

二.程序实现调用

Custom Setting调用方式和sObject方式基本相同。需求为当添加一条Goods,当不是白名单的用户,走Validate校验时,要求GoodsPrice__c必须大于GoodsCostPrice__c,当然需求是随便编的。。。

调用可参看:https://help.salesforce.com/HTViewHelpDoc?id=cs_accessing.htm&language=en_US

Goods的Trigger代码如下:

trigger GoodsTrigger on Goods__c (before insert) {
    if(trigger.isBefore) {
        if(trigger.isInsert) {
            GoodsValidateWhiteList__c currentGoodsValidateWhiteList = GoodsValidateWhiteList__c.getInstance(UserInfo.getUserId());if(currentGoodsValidateWhiteList == null || currentGoodsValidateWhiteList.IsActive__c == false || 
          currentGoodsValidateWhiteList.IsVisible__c == false) { for(Goods__c goods : trigger.new) { if(goods.GoodsPrice__c < goods.GoodsCostPrice__c) { goods.addError('GoodsPrice应该不小于GoodsCostPrice'); } } } } } }

三.运行效果显示

1.当使用配置的白名单用户登录时,当GoodsPrice小于GoodsCostPrice也无所谓,因为不走validate.

2.当使用其他用户登录时,由于没有配置白名单,需要校验GoodsPrice和GoodsCostPrice.

总结:使用Custom Setting可以更细致的针对Profile或者User进行数据分配,如果有类似需求情况下,此种方式会更加高效实现功能。如果篇中有描述错误的地方,欢迎批评指正,如果有不懂得地方欢迎留言。

posted @ 2016-07-26 13:26  zero.zhang  阅读(5333)  评论(2编辑  收藏  举报