从触发器中止异步顶点(未来调用)?可排队接口解决方案



我目前正在研究一些涉及通过销售订单对象上的触发器循环访问销售订单和销售订单产品的事情。我创建了一个 Apex 类,该类在更新触发器后从销售订单调用。触发器将字符串(销售订单 ID)传递给类的静态方法。此将来的调用方法查询属于销售订单 ID 的销售订单产品,并对集合中的每个项进行 Web 服务调用。这一切都很好用,但是我希望这个过程更健壮,更智能地处理错误。我希望能够做的是在方法遇到它不喜欢的东西时中止整个过程,假设它以它不喜欢的顺序识别产品作为示例。我发现唯一可以处理中止的进程是通过可排队接口,并通过System.enqueueJob()调用类。然而,这对我没有帮助,因为我一生都无法找到一种在调用 System.enqueueJob() 时将任何参数传递给此类的方法,因为类方法是静态的,并且接口强制进程从 execute() 方法运行,该方法仅接受上下文参数。我走错路了吗?我想到的唯一另一种可能性是为类中的所有子进程创建方法,并在遇到任何错误时从这些子进程返回,并设置一个布尔标志,可用于跳过类中的进程。抱歉,如果这没有意义,如果是这样,请告诉我,我会尝试提供更多信息。

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

System.enqueueJob(new myQueueableClass(salesOrderId));

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

相关内容

最新更新