Apex を使用する拡張トランザクションセキュリティポリシーの作成
[設定] を使用して、Apex を使用する拡張トランザクションセキュリティポリシーを作成します。既存の Apex クラスを指定するか、空のクラスを作成してからコーディングすることができます。Apex クラスは TxnSecurity.EventCondition インターフェースを実装する必要があります。
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience |
| 使用可能なエディション: Enterprise Edition、Unlimited Edition、および Developer Edition Salesforce Shield または Salesforce Event Monitoring アドオンサブスクリプションが必要です。 |
| 必要なユーザ権限 | |||
|---|---|---|---|
| イベントを参照および管理する | 「リアルタイムイベント監視データの表示」 | ||
| トランザクションセキュリティポリシーを作成、編集、管理する | 「アプリケーションのカスタマイズ」 | ||
同じイベント種別に複数のポリシーを作成できますが、ポリシーとそのアクションは重複しないようにすることをお勧めします。特定のイベントが発生したときにそのイベントの同じアクションを持つ複数のポリシーが実行される場合、実行順序は不確定です。
- [設定] の [クイック検索] ボックスに「トランザクションセキュリティ」と入力し、[トランザクションセキュリティポリシー] を選択します。
- [新規] をクリックし、[Apex] を選択します。
- [次へ] をクリックします。
-
どのイベントに対してポリシーを作成するかを選択します。
たとえば、組織で API コールを追跡する場合は [API イベント] を選択します。ユーザがいつレポートを表示またはエクスポートしたかを監視する場合は [レポートイベント] を選択します。使用可能なイベントの完全リストについては、「拡張トランザクションセキュリティ」を参照してください。
- ポリシーを実装する Apex クラスを選択します。まだクラスを作成していない場合は、[新しい空の Apex クラス] を選択します。
- [次へ] をクリックします。
-
ポリシーがトリガされたときに実行するアクションを選択します。
使用可能なアクションは、イベント種別によって異なります。詳細は、「トランザクションセキュリティアクションとは?」を参照してください。
-
通知先と通知方法を選択します。
選択するユーザには「すべてのデータの編集」権限と「設定の参照」権限が必要です。
-
ポリシーの名前と説明を入力します。
ポリシー名には、最初が文字である、空白を使用しない、最後にアンダースコアを使用しない、2 つ続けてアンダースコアを使用しないという制約があります。
-
必要に応じて、ポリシーを有効化します。
Apex クラスを作成する場合は、最初にコードをクラスに追加する必要があるため、まだポリシーを有効化しないでください。
-
[完了] をクリックします。
新しいポリシーが [ポリシー] テーブルに表示されます。Apex クラスを作成する場合、ポリシー名からスペースを除き、EventCondition という文字列を追加した最初の 25 文字がその名前になります。ポリシーの名前が「My Apex Class」の場合は、MyApexClassEventCondition という Apex クラスが自動生成されます。クラスが [Apex 条件] 列にリストされます。
-
編集する Apex クラスの名前をクリックします。
Apex クラスを作成する場合は、実装コードを追加する必要があります。開始できるように、Salesforce が次の基本コードを追加します。
1global class MyApexClassEventCondition implements TxnSecurity.EventCondition { 2 3 public boolean evaluate(SObject event) { 4 return false; 5 } 6 7}
Apex を使用するトランザクションセキュリティポリシーを削除しても、実装クラスは削除されません。この Apex クラスを個別に削除することも、別のポリシーで再利用することもできます。
Apex ベースのポリシーには DML ステートメントを含めないでください。エラーが発生する可能性があるためです。トランザクションポリシーの評価中に Apex を介してカスタムメールを送信すると、レコードが別のレコードに明示的に関連付けられていなくても、エラーが表示されます。詳細は、『Apex リファレンスガイド』の「Apex DML 操作」を参照してください。