apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁。
加锁之前要配置我们的组织,否则加锁不成功
在salesforce中没有配置允许使用apex代码对记录进行加锁,解锁。设置如下:
Setup->Build->Create->Workflow & Approvals->Process Automation Settings。将Enable record locking and unlocking in Apex这一项checkbox设置为true。
加锁方法:
String id='0067F000003oTQu';//传入一条记录id if(!Approval.isLocked(id)){//Approval.isLocked(id) 判断记录是否加锁 Approval.lockResult ur = Approval.lock(id);//给一条记录加锁 if (ur.isSuccess()) {//方法执行状态 System.debug('成功锁定记录,ID为:' + id); } else { for(Database.Error err : ur.getErrors()) { System.debug('锁定失败'); System.debug('=============失败消息:' + err.getStatusCode() + ': ' + err.getMessage()); } } }
解锁操作:
String id='0067F000003oTQu'; if(Approval.isLocked(id)) {//Approval.isLocked(id) 判断记录是否加锁 Approval.UnlockResult ur = Approval.unlock(Id);//给一条记录解锁 if (ur.isSuccess()) { System.debug('成功解锁记录,ID为:' + id); } else { for(Database.Error err : ur.getErrors()) { System.debug('解锁失败'); System.debug('=============失败消息:' + err.getStatusCode() + ': ' + err.getMessage()); } } }
Salesforce还提供了批量锁定的方法:
Approval.UnlockResult[] lrList = Approval.unlock(ListObject, true);//解锁
Approval.LockResult[] lrList = Approval.lock(ListObject, false);//加锁