salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项

我们都知道,当一条记录进入审批流程以后会自动加锁,apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁。

项目中遇到一个需求,需要当某种情况下对记录进行先解锁,然后update相关数据,然后再加锁。此种方式不影响审批流程。

主要大概代码如下所示

 1 if(Approval.isLocked(xxApproval)) {
 2       Approval.UnlockResult ur = Approval.unlock(xxApproval.Id);
 3       if (ur.isSuccess()) { // Operation was successful, so get the ID of the record that was processed 
 4          System.debug('Successfully unlocked  with ID: ' + ur.getId());
 5       } else {
 6          for(Database.Error err : ur.getErrors()) { 
 7              System.debug('The following error has occurred.'); 
 8              System.debug('=============xxxx:' + err.getStatusCode() + ': ' + err.getMessage());
 9          }
10       }
11  }

这段代码写完以后,xxApproval这条记录理论上也就解锁了,于是我自信满满的开始跑业务,跑到了这块方法的时候,第一个error message显示了:

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。

修改完这个配置以后,又自信满满的开始跑业务,跑到了这块方法的时候,第二个error message显示了:

System.UnexpectedException: null

 当时很纳闷为什么会出现null这个问题,因为我的xxApproval.Id通过追踪以后发现并不是null,那么只有一种可能,没有Approval.unlock方法,额,亦或是当前api version没有此方法,然后看一下这个类的api version,调成35.0,因为Approval.unlock和lock方法貌似是api 35以后才有的方法,然后保存。

这次心还是有点忐忑的继续跑这块,好在成功了,写下此篇博客,记录一下,以防以后还出现此种逗逼却又耗时的事情,有出现此种问题的小伙伴可以参照此种问题修改。

总结:使用某个类或者某个类的某个方法时,需要了解此类或者此方法支持的api版本是多少,如果项目是以前的,api版本通常不会高,有些方法不支持,这个时候不要怀疑自己的代码能力,怀疑一下你使用的api version吧。篇中有错误的地方欢迎指正,有问题的欢迎留言。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

大白话说前端应用 | 从开发角度看应用架构10

在正式做架构分析之前,我们需要明确两个概念:web server和web container的区别。

1233
来自专栏武军超python专栏

2018年8月18日初识tkinter

把C盘里面的东西移动到其他盘对文件有影响吗?普通文件如音频视频没有影响,但是如果是软件的话 下载的时候会在注册表中记录打开文件的路径,如果移动到其他盘的话注册...

792
来自专栏FreeBuf

破译优利德旗舰万用表UT181A通讯协议

UT181A是优利德门下旗舰级手持数字万用表,主打数据记录(Data Logging)功能,支持USB联机通讯。基本评测可以看我以前发的文章。前文说到,其官方或...

3818
来自专栏琯琯博客

Laravel API 开发推荐阅读清单

社区优秀文章 Laravel 5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 - 自造车轮。 API 文档神器 Swag...

5017
来自专栏PHP在线

重磅资料!Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Com...

2924
来自专栏程序员宝库

Python库大全(涵盖了Python应用的方方面面),建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

1094
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–总账(156)-7周期性分录

4.10 周期性分录 本功能支持可以定期创建的过帐。周期性分录类似于银行长期订单,用于扣除租金、缴纳付款、或直接的贷款偿还。周期性分录程序将基于周期性分录凭证...

3416
来自专栏进击的程序猿

The Clean Architecture in PHP 读书笔记(五)The Clean Architecture in PHP 读书笔记(五)

上篇最重要的是介绍了去耦的工具之一依赖注入,本篇将继续介绍去耦工具:接口和适配器,本文是The Clean Architecture in PHP的第5篇。

482
来自专栏互联网杂技

如何有效减少网页加载时间?20个提高网站访问速度的方法

网友上网都不喜欢用太多的时间等待网页的打开,等待的越长,用户可能会直接关闭网页,这样就会损失很多流量!其次,关键字的排名与网页的打开速度也有关系,这个主要体现搜...

35413
来自专栏假装我会写代码

两个非常棒的 Laravel 权限管理包推荐

2633

扫码关注云+社区