Triggers Salesforce Apex触发器“;isAPI“;上下文变量
有没有办法确定触发器是通过API调用还是通过Salesforce Web界面执行的 我想这样做:Triggers Salesforce Apex触发器“;isAPI“;上下文变量,triggers,salesforce,apex-code,force.com,Triggers,Salesforce,Apex Code,Force.com,有没有办法确定触发器是通过API调用还是通过Salesforce Web界面执行的 我想这样做: trigger Update_Last_Modified_By_API on My_Object__c (before update) { for (My_Object__c o : Trigger.New) { if (isAPI) { o.Last_Modified_By_API__c = datetime.now(); }
trigger Update_Last_Modified_By_API on My_Object__c (before update) {
for (My_Object__c o : Trigger.New) {
if (isAPI) {
o.Last_Modified_By_API__c = datetime.now();
}
}
}
(目前使用的是API版本25.0,但很快将更新到26.0)目前没有标准的方法在触发器中说明是什么导致了更新或插入(API、标准页面布局、VF页面和控制器、一些其他Apex代码等)。这是一个完整的清单 为了实现这一点,我建议在对象上创建一个自定义复选框字段,类似于
IsAPI\uu c
(默认值为false
)。然后,您需要做的就是通过任何API调用传入该字段的true
,然后在触发器中为批处理中的每个记录检查该字段(只需确保在完成时将其重置为false,这样来自UI的后续调用就不会被视为API调用)
如果您只是想确定某个事务是否通过UI启动,使用
System.URL.getCurrentRequestUrl()
方法可能会给您一个提示。我想没有办法知道>>@MartinBorthiry谢谢,我只是“推广”了它,希望这将在未来可用。几年后也是这样吗?
trigger Update_Last_Modified_By_API on My_Object__c (before update) {
for ( My_Object__c o : Trigger.New ) {
if ( o.IsAPI__c ) {
o.Last_Modified_By_API__c = datetime.now();
}
o.IsAPI__c = false;
}
}