有的時候我們可能有這樣的需求,當某個字段為特定的值情況下,便鎖定此條記錄,僅允許Profile為System Admin的用戶修改或者解鎖,其他的用戶只能查看此條記錄,不能修改此條記錄,這種情況下我們就的需要鎖定記錄(Lock Record)。
鎖定記錄(Lock Record)可以通過Process Builder以及Approval Processes實現功能。本人最開始用的自己申請的免費帳戶使用Custom Object來進行測試,發現的尷尬的事情就是Profile為System Admin的賬戶可以看到相關創建的Tab,並且可以鎖定記錄,但是其他非System Admin的賬戶沒法看到相關的tab,更沒法查看被鎖定的記錄了,所以為了測試其是否可以鎖定記錄,使用系統表Opportunities來進行測試。步驟如下:
1.Setup->Build->Create->Workflow&Approvals->Process Builder或者直接在搜索欄搜索Process Builder,點擊進入后點擊右上角的new
2.輸入相關信息后點擊OK
3.選擇需要操作的Object,按照自己需要設置執行狀態
4.設置條件,條件可以是標准的條件抑或使用formula方式設置判斷條件,在設置條件時,可以設置多個條件,按照條件的邏輯可以選擇與,或,或者其他自定義邏輯
5.設置action,action type有如下很多種,在這里可以選擇Apex或者Submit for Approval,因為apex代碼可以通過Approval類調用lock()方法,在這里選擇通過配置Approval方式而不是寫代碼方式進行。
6.輸入具體信息后點擊save,然后點擊右上角的Activate,然后點擊Back To SetUp,回到Set Up頁面。
7.SetUp->Build->Create->Workflow&Approvals 點擊進入,在Manage Approval Processes For:選擇Opportunity,在下方顯示Use Standard Setup Wizard
8.輸入Approval的具體信息以后,點擊Next
9.選擇執行的條件,如果對Approval Process不熟悉的移步Approval Process學習
10.指定Approval 字段和記錄訪問的配置,這里做默認的配置即可,然后點擊Next
11.選擇Approval需要的通知的email模板,當前不需要通知
12.選擇在Approval Page Layout展現的字段,因為字段不需要展示,所以直接默認,Next
13指定Submitter,按照自身需求,這里默認。點擊Save
14.save以后選擇創建approval step,點擊Go
15.輸入基本信息后點擊Next
16.選擇Enter step方式,然后選擇formula方式,在formula中輸入false,點擊Next
17選擇分配的審批者,按需選擇,這里選擇默認的,點擊Save
18.選擇No,I'll do this later
19.將Approval設置成Activate,置成以后效果如下所示
20.效果演示,通過當前用戶修改一條Opportunities記錄,將Stage項修改成Closed Won,則Save以后此條記錄便Lock。管理員可以擁有UnLock Record的權限
21.用普通用戶登錄,普通用戶的Profile選擇可以查看Opportunities這個Tab權限的Profile
22.登陸后此條記錄只能只讀,如果修改便報錯誤。
總結:通過Process Builder以及Approval Process配置方式可以通過點擊方式便實現特定情況下鎖定記錄功能,相對方便,此種方式缺點為無法通過當前登錄用戶的Permission Set來設置,如果項目通過Permission Set來設置權限,則無法通過上述的方式設置,可以考慮在第5步的時候選擇Apex來完成此種功能。Apex代碼可以很輕松獲取當前用戶的Permission Set以及通過Approval類可以很輕松的調用Lock()方法。