この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

EventCondition インターフェース

トランザクションセキュリティポリシーに基づいて、特定のイベントの発生時にアクションを実行するかどうかを実装クラスで指定できるようにします。このインターフェースは、リアルタイムイベント監視で作成された Apex ポリシーでのみ使用されます。

使用方法

evaluate メソッドは、トランザクションセキュリティポリシーで監視されているリアルタイムイベントが発生するとコールされます。通常の実装では、最初にイベントから関心のある項目を選択します。その項目をテストして、監視されている条件を満たすどうか確認します。条件を満たす場合、メソッドは true を返します。

たとえば、ユーザーが照会したリードレコード数が 1,000 件を超えたときにトリガーされるトランザクションセキュリティポリシーがあるとします。各 API イベントについて、evaluate メソッドは、RowsProcessed 値が 1,000 を超えるかどうかと、QueriedEntities 値に「Lead」が含まれるかどうかをチェックします。該当する場合は、true が返されます。

ポリシー条件インターフェースが正しく機能することを確認するために、テストクラスを用意することをお勧めします。ポリシーを Sandbox から本番組織に移動するか、変更セットと共に移動するか、または他の方法で移動するかに関係なくテストが必要です。たとえば、ポリシーを本番環境に移行する前に、開発環境でポリシーをテストします。

Apex のトランザクションセキュリティポリシーのテストについての詳細は、「トランザクションセキュリティの Apex テスト」を参照してください。

EventCondition メソッド

EventCondition のメソッドは次のとおりです。

evaluate(event)

リアルタイムイベント監視で作成されたトランザクションセキュリティポリシーに照らしてイベントを評価します。イベントがポリシーをトリガーすると、メソッドは true を返します。

署名

public Boolean evaluate(SObject event)

パラメーター

var1
型: SObject
トランザクションセキュリティポリシーに対して確認するイベント。

戻り値

型: Boolean

ポリシーがトリガーされる場合、true が返されます。たとえば、ユーザーをシングルログインセッションに限定するポリシーがあるとします。ユーザーが再ログインを試みると、ポリシーによりログインがブロックされ、その LoginEvent の Status、PolicyId、および PolicyOutcome 項目が更新されます。また、Salesforce システム管理者にもメール通知が送信されます。evaluate メソッドは、ログインイベントのみを確認し、ユーザーの 2 つ目のログインの試みである場合に true を返します。

システムはアクションと通知を実行しますが、evaluate メソッドは実行しません。

EventCondition の実装例

これは、TxnSecurity.EventCondition インターフェースの実装例を示しています。ユーザーが取引先オブジェクトを照会すると、トランザクションセキュリティポリシーがトリガーされます。

1global class BlockAccountQueriesEventCondition implements TxnSecurity.EventCondition {
2
3   public boolean evaluate(SObject event) {
4      switch on event {
5         when ApiEvent apiEvent {
6            return handleApiEvent(apiEvent);
7         }
8         when null {
9         // Trigger action if event is null
10            return true;
11         }
12         when else {
13         // Trigger action for unhandled events
14            return true;
15         }
16      }
17   }
18
19   private boolean handleApiEvent(ApiEvent apiEvent){
20      if(apiEvent.QueriedEntities.contains('Account')){ 
21         return true;
22      } 
23      return false;
24   }
25}

詳細は、「Apex トランザクションセキュリティの高度な実装例」を参照してください。