从触发器中止异步顶点(将来的调用)? Queuable接口解决方案?

时间:2016-07-07 17:42:50

标签: triggers salesforce jobs apex

我目前正致力于通过销售订单对象上的触发器迭代销售订单和销售订单产品。我创建了一个在更新触发器后从销售订单调用的Apex类。触发器将字符串(Sales Order Id)传递给类的静态方法。此未来的调用方法查询属于销售订单ID的销售订单产品,并为集合中的每个项目进行Web服务调用。这一切都很好,但是我希望这个过程更加健壮并更智能地处理错误。我希望能够做的是当方法遇到它不喜欢的东西时中止整个过程,让我们说它按照它不喜欢的顺序标识产品作为例子。我发现可以处理中止的唯一过程是通过Queueable接口,并通过System.enqueueJob()调用该类。然而,这对我没有帮助,因为我无法为我的生活找到一种在调用System.enqueueJob()时将任何参数传递给此类的方法,因为类方法是静态的,并且接口强制进程从execute()方法,它只接受Context参数。我是否会走错路?我想到的唯一另一种可能性就是为我的类中的所有子进程创建方法,如果遇到任何错误则从那些子进程返回,并设置一个bool标志,可用于在类中跳过进程。对不起,如果这没有意义,如果是这样,请告诉我,我会尝试提供更多信息。

1 个答案:

答案 0 :(得分:0)

您可以将参数传递给构造函数中的Queueable作业。即:

System.enqueueJob(new myQueueableClass(salesOrderId));

您需要在Queueable类中添加一个构造函数,该构造函数将接受销售订单ID并将其存储在也在Queueable类中声明的私有变量中,然后可以通过execute()方法访问该变量。