有时候,项目中我们需要设置类似白名单的功能,即某些用户或者某种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进行数据分配,如果有类似需求情况下,此种方式会更加高效实现功能。如果篇中有描述错误的地方,欢迎批评指正,如果有不懂得地方欢迎留言。

salesforce 零基础学习(四十)Custom Settings简单使用的更多相关文章

  1. salesforce 零基础学习(十九)Permission sets 讲解及设置

    Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...

  2. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  3. salesforce 零基础学习(十六)Validation Rules & Date/time

    上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...

  4. salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_syst ...

  5. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  6. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  7. salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...

  8. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  9. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

  10. salesforce零基础学习(一百一十)list button实现的一些有趣事情

    本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/docu ...

随机推荐

  1. JS-字符串操作-替换

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  2. 如何使用NodeJs来监听文件变化

    1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...

  3. ExtJs 3.0 动态生成 CheckBox

    在开发过程中,往往需要利用数据动态生成Checkbox.如权限节点.考试答案,调查选项等等.在Extjs中,有两种方法来获取后台数据,一是Ext.Ajax()方法,第二种是利用 Store,store ...

  4. AngularJs 时间控件

    <div class="form-group col-sm-4 clearfix"> <label class="col-sm-5 control-la ...

  5. 2016-11-15mysql优化笔记

    1.mysql连接数:MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,连接数少的话,在大并发下连接数会不够用,会有很多线程在等待其他连接释放, ...

  6. Eclipse安装与配置

    http://www.th7.cn/Program/java/201307/144477.shtml http://www.eclipse.org/ 我们下载J2EE版本:Eclipse IDE fo ...

  7. sgdisk常用操作

    与fdisk创建MBR分区一样,sgdisk是一个创建GPT分区的工具,如果你还不了解GPT分区,请参考The difference between booting MBR and GPT with ...

  8. linux下显示dd命令的进度:

    linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000 想要查看上面的dd命令的执行进度,可以使用下面几种方法: 比 ...

  9. JAVA学习博客---2015-6

    JAVA核心技术卷一第一遍看得差不多了,应该是五月初开始看的,用了两个月的中午时间看完的,一共七百多页,接下来还是需要再看一遍,不懂的还是有很多. JAVA和C++一样是面向对象OOP的语言,不同于命 ...

  10. 丹佛机场行李系统Postmortem

    丹佛机场行李系统做Postmortem总结 事情起因是因为丹佛市场承诺进行机场建设,因此此项目问题不可回避,必须完成,合作的双方都是富有经验的公司但是最后依然变成了不可控的项目,经过小组讨论后我们认为 ...