admin管理员组文章数量:1122850
场景描述:为了卡业务流程,避免在业务的某个阶段禁止业务人员对记录有更新/删除的权限,经常会使用代码锁定记录。
以下是使用的代码片段:
try{
quote.Status = 'Abandoned';
update quote;
// lock the record
Approval.LockResult lockResult = Approval.lock(quoteId, false);
if(lockResult.isSuccess()) {
result.code = '0';
result.msg = Label.ACC_Abandon_Quote_Success;
}
}catch (Exception e) {
System.debug('update status error: ' + e.getMessage());
result.code = '1';
result.msg = Label.ACC_Abandon_Quote_Failed;
}
在执行该代码时,出现如下异常:System.UnexpectedException: Apex approval lock/unlock api preference not enabled.
解决方案:
此种问题原因是因为在salesforce中没有配置允许使用apex代码对记录进行加锁,解锁。设置如下:
Setup->Build->Create->Workflow & Approvals->Process Automation Settings。将Enable record locking and unlocking in Apex这一项checkbox设置为true。
注释:master-detail关系的记录,锁定master记录,detail记录也会随之被锁定。
补充:通常对于主详细关系的记录,如果使用自定义按钮控制详细记录的创建,那么一旦主详细记录被lock后,需要对该自定义按钮做是否锁定的校验,所以以下提供判断记录是否被锁定的方法。
Boolean isLocked = Approval.isLocked(recId);
【备注】:有时候当使用Approval.lock()锁住记录后,Lock icon没有出现,我们可以点击Edit查看是否具体被锁定。
参考资料:https://developer.salesforce/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_approval.htm
本文标签: 异常SalesforceCodeLock
版权声明:本文标题:在Salesforce中使用Code Lock记录或判断记录是否被锁定及异常处理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1725943344a1034434.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论