Future Method
Futurn Method란, 분리된 스레드에서 프로세스를 실행하는데 사용된다. 때문에 후에 시스템 리소스를 사용할 수 있다.
언제 사용되나
- Callouts to external Web services. If you are making callouts from a trigger or after performing a DML operation, you must use a future or queueable method. A callout in a trigger would hold the database connection open for the lifttime of the callout and that is a "no-no" in a multitienant environment.
- Operations you want to run in their own thread, when time permits such as some sort of resource-intensive calculation or processing of records.
- Isolating DML operations on different sObject types to prevent the mixed DML error.
특징
- 순서 지정하는 것이 불가능.
- System resources가 사용가능할 때 실행 가능.
- 무조건 static method 여야 하고, return type은 무조건 void type이어야 함.
- Arguments로 standard나 custom object를 취할 수 없음.
예제
public class SMSUtils {
// Call async from triggers, etc, where callouts are not permitted.
@future(callout=true)
public static void sendSMSAsync(String fromNbr, String toNbr, String m) {
String results = sendSMS(fromNbr, toNbr, m);
System.debug(results);
}
// Call from controllers, etc, for immediate processing
public static String sendSMS(String fromNbr, String toNbr, String m) {
// Calling 'send' will result in a callout
String results = SmsMessage.send(fromNbr, toNbr, m);
insert new SMS_Log__c(to__c=toNbr, from__c=fromNbr, msg__c=results);
return results;
}
}
Batch Apex
Batch Apex란, 보통의 프로세스 limit을 초과하는 거대한 크기의 job을 실행하는 것을 말한다. 항상 Database.Batchable 인터페이스를 실행해야 한다.
Queueable Apex
Queueable Apex란, future method와 비슷하다. 차이점은 추가적인 job chaining을 제공하고 더 복잡한 데이터 타입을 허용한다. Ex) 외부 웹 서비스에 관한 순차적인 프로세싱 실행
Scheduled Apex
Scheduled Apex란, 특정 시간에 Apex를 실행하도록 스케줄 잡는 것이다.