有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们就的需要锁定记录(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()方法。