我想在添加/删除/修改附件对象的任何时候触发顶点触发器。当这个触发器触发时,我想通过一个顶点类传递附件的父ID,该顶点类将该ID传递给外部网站上的PHP页面(使用GET很好)。
我不必须显示PHP页面,我只需要运行PHP页面。 php页面只将ID存储在MySQL数据库中。我也不需要知道附件发生了什么(如果它被添加/删除/修改)。
非常感谢您提供的任何帮助。我尝试了几种不同的方法,但我遇到了很多错误,每次都无法弄清楚。我不认为我的任何尝试都值得在这里分享。
非常感谢!
答案 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调用数量有限制,因此您应批量执行。