Salesforce-需要在托管包代码后触发Apex触发器

Salesforce-需要在托管包代码后触发Apex触发器,salesforce,apex,Salesforce,Apex,我编写了一些代码来更新托管包对象。我可以在调试日志中看到,代码应该可以工作,但是问题是托管包代码正在同时执行,或者在代码运行之后执行。我正在更新记录,并且在托管代码运行后正在擦除更新。有没有一种方法可以让我等到托管代码运行之后再使用。我曾尝试在其中放入wait语句,但有时它们的代码运行得很快,有时则不然,所以我需要先检查是否有代码正在运行 试图使用等待 If (clsCheckRecursive.IsItFirstRun == True) { clsCheckRecursive.Is

我编写了一些代码来更新托管包对象。我可以在调试日志中看到,代码应该可以工作,但是问题是托管包代码正在同时执行,或者在代码运行之后执行。我正在更新记录,并且在托管代码运行后正在擦除更新。有没有一种方法可以让我等到托管代码运行之后再使用。我曾尝试在其中放入wait语句,但有时它们的代码运行得很快,有时则不然,所以我需要先检查是否有代码正在运行

试图使用等待

  If (clsCheckRecursive.IsItFirstRun == True) {
    clsCheckRecursive.IsItFirstRun = False;

      Long startingTime = System.now().getTime(); 
  Integer delayInMilliseconds = 20000; // One-second delay
while (System.now().getTime() - startingTime < delayInMilliseconds)  {

        // Do nothing until desired delay has passed
 }

      //Then My Code
If(clsCheckRecursive.IsItFirstRun==True){
clsCheckRecursive.IsItFirstRun=False;
Long startingTime=System.now().getTime();
整数delayinmillides=20000;//延迟一秒
while(System.now().getTime()-startingTime

因此,如果我等待的时间超过此时间,我会出现超时错误。如果我等待的时间不够长,我的update语句将失败。是否可以检查托管包操作是否已完成。我在调试器中看不到任何代码。它所说的只是vFlemoting。

触发器不会在并行线程中执行,因此等待除了消耗CPU时间限制

您无法控制平台上Apex触发器的执行顺序。相反,您必须重新构造代码。在不了解托管代码的情况下,最简单的方法是将代码推入单独的事务中。您可以通过
@future
方法、可排队的Apex或平台事件或potenti来完成此操作甚至通过编写一个变更事件触发器来实现


但是,如果您的代码在该单独事务中所做的更改导致托管触发器再次运行并更改您的更改,这并不能解决问题。您可能需要详细了解托管包运行的操作顺序,这可能需要咨询供应商,因为de对您不可见。处理托管触发器通常非常具有挑战性。

我有一个执行类的触发器。在这种情况下是否可以使用@future?是的,这是可能的。hmmmmm…..显然,在将触发器传递到列表时不能使用它。new from trigger----future方法不支持类型list ughh…I kee但是你给了我一条路。。。