Apex开发指南--使用静态变量做追踪器

防止在一个事务中循环调用trigger

学习目的:
1,trigger的循环调用--追踪trigger是否执行
2,future方法是否执行 -- 追踪future的执行

salesforce不想java开发的平台,能够限定输入和输出。在salesforce里面可能有多个地方会去对同一个东西进行操作。比如工作流可能触发trigger,apex里面的更新操作可能触发trigger。这是salesforce追求多配置化,少codeing的弊端之一。给了管理人和那些没有开发技能的人也可以进行对数据的操纵。

追踪trigger是否执行

在这里插入图片描述
图片展示的就是,当trigger触发trigger,然后工作流又循环触发。这个时候我们就要考虑如何避免这种死循环的操作。写代码的的时候可以考虑使用以下的代码框架

//使用静态变量,是因为在一个事务中静态变量只会初始化一次,并且作为全局变量,只有当事务终止,值才会被重置
public static Boolean firstCall = false;
if (!firstCall) {
	//第一次触发
	firstCall =  true;
}else{
	//再次触发
}

future方法是否执行

使用以下的框架就可以判断是否执行了future方法

public class someFutureOperations{
	private static Boolean futureCallCalled = false;

	public static void doFutureCalle(){
		if (futureCallCalled || System.isFuture()) {
			return;
		}
		futureCallCalled = true;
		actualFutureCall();
	}

	@future
	public static void actualFutureCall(){
		//执行真正需要执行异步的逻辑
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值