有時候,項目中我們需要設定類似白名單的功能,即某些使用者或者某種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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4gDN1EDMxQTMtMTMwMzMxMTMxYjM3AjNxAjMtYjN5ATM58CX3AjNxAjMvwlN2kDMxkzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
二.程式實作調用
Custom Setting調用方式和sObject方式基本相同。需求為當添加一條Goods,當不是白名單的使用者,走Validate校驗時,要求GoodsPrice__c必須大于GoodsCostPrice__c,當然需求是随便編的。。。
調用可參看:https://help.salesforce.com/HTViewHelpDoc?id=cs_accessing.htm&language=en_US
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進行資料配置設定,如果有類似需求情況下,此種方式會更加高效實作功能。如果篇中有描述錯誤的地方,歡迎批評指正,如果有不懂得地方歡迎留言。
作者:zero
部落格位址:http://www.cnblogs.com/zero-zyq/
本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接
個人下載下傳了一些相關學習的PDF檔案,如果需要下載下傳請通路百度雲 點選此處通路 密碼:jhuy
如果文章的内容對你有幫助,歡迎點贊~
為友善手機端檢視部落格,現正在将部落格遷移至微信公衆号:Salesforce零基礎學習,歡迎各位關注。