비동기 Apex 예
트랜잭션 보안 정책을 실행할 때 비동기 Apex 프로세스를 사용하여 외부 수신자에게 알림 이메일 보내기 등 시간이 소비되는 작업을 위임하십시오.
필수 Edition
| Salesforce Classic(일부 조직에서 사용할 수 없음) 및 Lightning Experience 모두에서 사용할 수 있습니다. |
지원 제품: Enterprise, Unlimited 및 Developer Edition Salesforce Shield 또는 Salesforce 이벤트 모니터링 추가 기능 구독이 필요합니다. |
이 예는 두 부분으로 이루어집니다. 먼저 실행 메서드 내 이벤트를 사용하는 비동기 Apex 클래스를 만들어 콜아웃 또는 DML 작업을 호출합니다. 두 번째로 트랜잭션 보안 정책을 생성하고 Apex 클래스를 수정하여 TxnSecurity.EventCondition 및 TxnSecurity.AsyncCondition을 구현합니다.
트랜잭션 보안 정책이 트리거되면 TxnSecurity.AsyncCondition이 비동기 Apex 프로세스를 대기열에 지정합니다.
노트 DML 작업 및 콜아웃은 고급 트랜잭션 보안 정책과 함께 비동기 Apex를 사용하는 경우에만 지원됩니다.
비동기 Apex 클래스 만들기
이 섹션에서 SObject를 취하는 비동기 Apex 클래스를 만듭니다. 다음 예에서는 ApiEvent가 사용되며, 콜아웃 또는 DML 작업을 호출합니다.
public class SimpleAsynchronousApex implements Queueable {
private ApiEvent apiEvent;
public SimpleAsynchronousApex(ApiEvent apiEvent) {
this.apiEvent = apiEvent;
}
public void execute(QueueableContext context) {
// Perform your callout to external validation service
// or a DML operation
}
}정책 만들기
이 섹션에서는 정책과 관련된 Apex 클래스를 수정하는 트랜잭션 보안 정책을 만든 다음, SimpleAsynchronousApex 개체를 만들고 ApiEvent에 전달한 후 작업을 대기열에 지정합니다.
global class SimpleApiEventCondition implements TxnSecurity.EventCondition, TxnSecurity.AsyncCondition {
public boolean evaluate(SObject event) {
// Cast SObject to an ApiEvent object
ApiEvent apiEvent = (ApiEvent) event;
SimpleAsynchronousApex simpleAsynchronousApex = new SimpleAsynchronousApex(apiEvent);
System.enqueueJob(simpleAsynchronousApex);
return false;
// In a typical implementation may return true if it triggers an action
}
}다음 사항도 참조:
이 기사를 통해 문제를 해결했습니까?
개선을 위한 의견을 보내주세요.

