如何在附件对象上使用Apex Trigger在PHP页面上运行Callout

时间:2013-10-11 22:13:54

标签: salesforce apex-code

我想在添加/删除/修改附件对象的任何时候触发顶点触发器。当这个触发器触发时,我想通过一个顶点类传递附件的父ID,该顶点类将该ID传递给外部网站上的PHP页面(使用GET很好)。

必须显示PHP页面,我只需要运行PHP页面。 php页面只将ID存储在MySQL数据库中。我也需要知道附件发生了什么(如果它被添加/删除/修改)。

非常感谢您提供的任何帮助。我尝试了几种不同的方法,但我遇到了很多错误,每次都无法弄清楚。我不认为我的任何尝试都值得在这里分享。

非常感谢!

1 个答案:

答案 0 :(得分:2)

为了让一个标注在触发器内工作,你需要再做一步:@ future-Call。 这意味着,从触发器中,您必须收集插入/更新/删除的所有ID。然后,您必须使用@ future-Annotation创建一个实现静态void的Class(因此,此函数始终以异步方式执行)。最后,从触发器调用此函数并在函数中运行callout。

trigger Attachment_AfterAll_Callout on Attachment (after insert, after update, after delete) {
    Set<Id> ids = new Set<Id>();
    //collect your ids here
    //you might get away with just using ALL ids: ids = Trigger.newMap.keyset()
    //call @future Function
    WebserviceHandler.attachmentCall(ids);
}

在课程文件中:

public class WebserviceHandler {
     @future(callout=true)
     public static void attachmentCall(Set<Id> ids) {
         //make your WS Callout here. 
         //Note, this is not guaranteed to run inline with the trigger,
         //execution may be delayed!
     }
}

请注意,您运行的@future调用数量有限制,因此您应批量执行。