Salesforce触发序列

时间:2013-04-12 04:04:30

标签: salesforce apex-code apex

我在一个对象上有两个触发器。

一个是托管包,我无法看到或修改触发器内的内容。

一个是我的设计。

我想在托管包触发器之前运行我自己创建的触发器。我能控制触发器的执行顺序吗?

因为它现在始终首先运行托管包触发器。我想首先运行我的触发器。我已经思考了几天。我公司的所有同事都不知道如何实现这一目标。如果不解决这个问题,我就无法继续工作。请帮帮我。

1 个答案:

答案 0 :(得分:0)

在系统中没有办法控制调用触发器的顺序,我认为这是不安全编程的限制。您是否可以访问包触发器?这对于在一个对象上具有多个触发器是一种非常糟糕的方法,更好的解决方案是使用单个触发器来调用各种处理程序。然后,在处理程序级别,您可以管理此处理程序的序列..

例如,这是一个简单的触发器,它在不同的事件上调用,并使用各种逻辑调用不同的方法:

trigger ContactTrigger on Contact (before insert, before update) {

    /* Before Update*/  
    if(Trigger.isUpdate && Trigger.isBefore){
         /*
         here you can invoke different methods of different classes
         (trigger handlers) in different sequences
         */
    }

    /* Before Insert*/
    if(Trigger.isInsert && Trigger.isBefore){
        //on other events you can use it too
    }
}
}

为了确保只有在执行完前一个处理程序后才能调用处理程序,您可以使用状态变量,其值将在处理程序的末尾更改,并且您可以在调用其他处理程序之前进行检查。我希望这将有助于你将来:)