2012-09-19 59 views
6

有沒有方法可以確定觸發器是由API調用還是通過Salesforce Web界面執行?Salesforce Apex觸發器「isAPI」上下文變量

我想要做這樣的事情:

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)

+2

我認爲這是沒有辦法知道>> http://success.salesforce.com/ideaView?id=08730000000BpsCAAS –

+0

@MartinBorthiry謝謝,我只是「提升」了,希望這將是可用在未來 – Greg

回答

4

目前以中告訴任何標準方法觸發實際導致更新或插入發生的事件(API,標準頁面佈局,VF控制器,一些其他Apex代碼等)。以下是Trigger Context Variables的完整列表。

爲了達到這個目的,我建議在對象上創建一個自定義複選框字段,如IsAPI__c(默認值爲false)。然後,您需要做的就是通過任何API調用爲該字段傳入true,然後檢查批次中每個記錄的觸發器字段(只要確保在完成後記得將其重置爲false)來自UI的後續調用不被視爲API調用)。

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; 
    } 
} 
+0

不是我所希望的,而是一個很好的解決方法 – Greg

+0

這是幾年來相同的情況? –

相關問題