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 条评论
登录 后参与评论

相关文章

来自专栏蓝天

LVS初步

很多人知道LVS,但可能知之不多,希望阅读本文后,能够对LVS有一个基本的感性认识。

9430
来自专栏SDNLAB

容器 Flannel vxlan 基本原理和验证

作者简介:yangjunsss,曾就职于IBM、青云QingCloud,现就职于华为,研究方向:容器微服务、IaaS、P2P分布式。邮箱 cj.yangjun@...

35420
来自专栏即时通讯技术

网络编程懒人入门(一):快速理解网络通信协议(上篇)

论坛和群里常会有技术同行打算自已开发IM或者消息推送系统,很多时候连基本的网络编程理论(如网络协议等)都不了解,就贸然定方案、写代码,显得非常盲目且充满技术风险...

11510
来自专栏云上大文件传输

RaySync 传输协议的有效带宽利用率分析介绍

最近在评论区收到不少朋友反应RaySync FTP文件传输的效果挺好,谢谢大家的鼓励。也有部分熟悉技术的同学希望介绍下原理,有部分同学咨询RaySync传输协议...

54260
来自专栏腾讯架构师的专栏

从 10 Gb 到 40 Gb,从百万级到千万级转发,打造高性能 TGW

TGW 是一套实现多网接入的负载均衡系统,为腾讯业务提供着外网接入服务。随着 TGW 影响力的提升,越来越多的业务接入 TGW,对于 TGW 的整体负载能力要求...

2.5K20
来自专栏开源优测

TCP/IP协议基础

TCP/IP 为网际协议族 IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP都属于TCP/IP

15910
来自专栏小文博客

百度云破限速(安卓+Windows)

10.5K30
来自专栏企鹅号快讯

HTTP协议简介

前言 本文摘录自 RFC 2616(HTTP/1.1 协议文档),如想查阅1.0版本协议请参见(RFC1945)。 本文档主版本为英文,有中译可参考。 相关地址...

21500
来自专栏天天P图攻城狮

Android系统打印方案分析

Android Print API Android默认实现了打印的框架,使用PrintManager+PrintManagerService可以轻松实现打印...

2.2K40
来自专栏双十二技术哥

Multidex(二)之Dex预加载优化

在Multidex(一)之源码解析中我们介绍到MultiDex极有可能出现ANR(Application No Response)的问题,秒秒钟卡死我们的应用,...

25650

扫码关注云+社区

领取腾讯云代金券