6

トリガーが 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();
        }

    }

}

(現在 API バージョン 25.0 を使用していますが、まもなく 26.0 に更新されます)

4

2 に答える 2

4

現在、更新または挿入が実際に発生した原因 (API、標準ページ レイアウト、VF ページとコントローラ、その他の Apex コードなど) をトリガー内で伝える標準的な方法はありません。トリガー コンテキスト変数の完全なリストは次のとおりです。

これを実現するには、オブジェクトにカスタム チェックボックス フィールドを作成することをお勧めしますIsAPI__c(デフォルト値はfalse)。次にtrue、API 呼び出しでそのフィールドを渡し、バッチ内の各レコードのトリガーのフィールドをチェックするだけです (後で完了したら、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;
    }
}
于 2012-09-19T14:18:02.533 に答える