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

Newer Version Available

This content describes an older version of this product. View Latest

AsyncCondition インターフェース

非同期の Apex コールを実行するためにクラスの実装を許可します。このインターフェースは、リアルタイムイベント監視で作成されたトランザクションセキュリティ Apex ポリシーでのみ使用されます。

名前空間

TxnSecurity

使用方法

トランザクションセキュリティポリシー条件を実装したクラスで非同期 Apex コールを実行する場合は、TxnSecurity.EventCondition のほかに TxnSecurity.AsyncCondition インターフェースをクラスに実装する必要があります。トランザクションセキュリティ Apex ポリシーで許可されない Apex コールアウトおよび DML ステートメントの代わりに、非同期 Apex を使用します。

Apex では、さまざまな方法で Apex コードの非同期実行が可能です。TxnSecurity.AsyncCondition インターフェースでは、これらのすべての方法がサポートされています。

このインターフェースには、メソッドはありません。

AsyncCondition の実装例

TxnSecurity.AsyncCondition インターフェースの実装例を次に示します。ユーザがログインすると、トランザクションセキュリティポリシーがトリガされます。この例の場合、ExternalValidation__c は、外部検証システムからの情報を含むカスタムオブジェクトです。ExternalValidation__c に対する SOQL クエリの結果によって、ユーザのログインをブロックするかどうかが決定されます。次にこのポリシーにより、CalloutToExternalValidator クラスが非同期実行のためにキューに入れられます。CalloutToExternalValidator クラスを実行すると、検証システムに対する外部コールが実行され、イベントのこのログに関する情報でクラスが更新されます。CalloutToExternalValidator は、非同期 Apex によってトリガされます。そのため、ExternallyValidatedLoginCondition Apex クラスには、通常の TxnSecurity.EventCondition インターフェースとともに、TxnSecurity.AsyncCondition インターフェースを実装する必要があります。

1global class ExternallyValidatedLoginCondition implements TxnSecurity.EventCondition, TxnSecurity.AsyncCondition {
2    public boolean evaluate(SObject event) {
3        LoginEvent loginEvent = (LoginEvent) event;
4        Boolean userBlocked = [select blocked from ExternalValidation__c where loginId = loginEvent.UserId][0].Blocked;
5 
6        System.enqueueJob(new CalloutToExternalValidator(loginEvent.SourceIp, loginEvent.LoginUrl));
7        return userBlocked;
8    }
9}
10 
11public class CalloutToExternalValidator implements Queueable {
12    private String sourceIp;
13    private String loginUrl;
14 
15    public CalloutToExternalValidator(String sourceIp, String loginUrl) {
16        this.sourceIp = sourceIp;
17        this.loginUrl = loginUrl;
18    }
19 
20    public void execute(QueueableContext context) {
21        // callout to external validation service
22        // pass sourceIp, loginUrl
23                
24        // update ExternalValidation__c
25    }
26}