[Transactional Level Bypass] Bypass Validation Rule in Apex Batch Class

2024-04-30 19:20

本文主要是介绍[Transactional Level Bypass] Bypass Validation Rule in Apex Batch Class,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

现有一个batch job用于批量更新Lead,最近频繁收到apex exception email, 显示更新Lead的时候触发了validation rule,导致apex job运行失败。

batch class节选如下:

public void execute(Database.BatchableContext bc, List<Lead> scope) {for (Lead l : scope) {l.Assigned_SDR__c = null;l.Lead_Category__c = null;}update scope;
}

影响评估

假如当前批次需要更新5条Lead,其中仅有1条Lead触发了validation rule。那么上述代码执行时,5条记录都不会被更新;同时,由于没做try catch处理,订阅exception email后会收到apex exception通知。

目标

为确保batch job不受脏数据都影响,我们需要绕过validation rule。

解决方案

方案Overview:

  1. 在Lead对象上增加2个字段 Automation_Bypass__cAutomation_Timestamp__c
  2. 在Validation Rule中引用条件判断是否需要 Automation_Bypass__c
  3. 在Batch Class更新Lead的时候,将now赋值给 Automation_Timestamp__c

关键字段如下图:
在这里插入图片描述
调整后的batch class节选如下:

public void execute(Database.BatchableContext bc, List<Lead> scope) {Datetime now = System.now();for (Lead l : scope) {l.Assigned_SDR__c = null;l.Lead_Category__c = null;// Bypass Lead Validation Rules to guard against invalid data. Users needs to manually fix datal.Automation_Timestamp__c = now;}update scope;
}

这样,我们就可以确保自动更新Lead的5s内validation rule将会被绕过,5s后当业务人员编辑Lead,validation rule将会再次被enforce,需要业务人员修复脏数据问题。

达成效果

  1. 开发人员 不用在意脏数据对代码的考验
  2. 业务经理 不用承受批量修复数据的压力
  3. 业务人员 仅在需要的时候顺手修复数据

这篇关于[Transactional Level Bypass] Bypass Validation Rule in Apex Batch Class的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949705

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

spring 参数校验Validation示例详解

《spring参数校验Validation示例详解》Spring提供了Validation工具类来实现对客户端传来的请求参数的有效校验,本文给大家介绍spring参数校验Validation示例详... 目录前言一、Validation常见的校验注解二、Validation的简单应用三、分组校验四、自定义校

提示:Decompiled.class file,bytecode version如何解决

《提示:Decompiled.classfile,bytecodeversion如何解决》在处理Decompiled.classfile和bytecodeversion问题时,通过修改Maven配... 目录问题原因总结问题1、提示:Decompiled .class file,China编程 bytecode

类型信息:反射-Class

在说反射前提一个概念:RTTI(在运行时,识别一个对象的类型) public class Shapes {public static void main(String[] args) {List<Shape> shapes = Arrays.asList(new Circle(), new Square(), new Triangle());for (Shape shape : shapes

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

MiniCPM-V: A GPT-4V Level MLLM on Your Phone

MiniCPM-V: A GPT-4V Level MLLM on Your Phone 研究背景和动机 现有的MLLM通常需要大量的参数和计算资源,限制了其在实际应用中的范围。大部分MLLM需要部署在高性能云服务器上,这种高成本和高能耗的特点,阻碍了其在移动设备、离线和隐私保护场景中的应用。 文章主要贡献: 提出了MiniCPM-V系列模型,能在移动端设备上部署的MLLM。 性能优越: