0
我在对象上有两个触发器。Salesforce触发序列
一个是托管包,我无法看到或修改触发器内的内容。
一个是由我设计的。
我想在托管包触发器之前运行自己创建的触发器。我可以控制触发器执行的顺序吗?
因为它现在总是首先运行托管软件包触发器。我想先运行我的触发器。我已经想了几天。我公司的所有同事都无法知道如何实现这一目标。没有解决这个问题,我无法继续我的工作。请帮助我。
我在对象上有两个触发器。Salesforce触发序列
一个是托管包,我无法看到或修改触发器内的内容。
一个是由我设计的。
我想在托管包触发器之前运行自己创建的触发器。我可以控制触发器执行的顺序吗?
因为它现在总是首先运行托管软件包触发器。我想先运行我的触发器。我已经想了几天。我公司的所有同事都无法知道如何实现这一目标。没有解决这个问题,我无法继续我的工作。请帮助我。
在系统中没有办法控制调用触发器的顺序,我认为这种不安全编程的局限性。你有权使用包装触发器吗?这对于在一个对象上有几个触发器是一个非常糟糕的方法,更好的解决方案是有一个触发器来调用各种处理程序。然后,在处理器级别,你可以管理这个处理程序的顺序..
例如,这是简单的触发器,它调用不同的事件,并调用各种逻辑不同的方法:
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
}
}
}
为了确保只有在完成执行前一个处理程序之后才能调用处理程序,则可以使用状态变量的值在处理程序结束时更改,并且可以在调用其他处理程序之前进行检查。我希望这将在未来帮助你:)
托管触发器之前或之后运行?一般来说,我们无法控制订单,这就是为什么在一个“插入之前”触发多于一个触发器是一个不好的主意。在真正复杂的场景中,我甚至使用http://www.embracingthecloud.com/2010/07/08/ASimpleTriggerTemplateForSalesforce.aspx。你有没有试过联系你的软件包的作者? – eyescream