Future Method
1) Making callouts to external web services.
i.e. When we are making callouts to external web services from a trigger or after performing a DML operation, we must use a future or queueable method.
2) Process we want to run in its separate thread in the back-end.
i.e. When we are working on some sort of resource consuming calculation or processing of records.
3) Isolating DML operations on different types of sObject.
i.e. When we are performing DML on setup and non-setup sObject types, it isolates DML to prevent the "Mixed DML Errors".
Future Method Syntax:
global class FutureClass {
@future
public static void futureMethod(List<Id> recordIds) {
List<Account> accounts = [Select Id, Name from Account Where Id IN :recordIds];
// process account records to do awesome stuff
}
}
Future Method Considerations
1) Future methods must be static methods and return a void.
2) Parameters must be primitive data types, arrays of primitive data types, or collections of primitive data types.
Note:- Future methods can’t take standard or custom objects as arguments.
3) Common pattern is to pass a List<record IDs> that you want to process asynchronously.
4) Future methods can’t be used in Visualforce controllers in getMethod(), setMethod(), nor in the constructor.
5) You can’t call a future method from a future method.
6) You can not invoke a trigger that calls a future method while running a future method.
7) The getContent() and getContentAsPDF() methods can’t be used in future method.
8) You’re limited to 50 future calls per Apex invocation.
9) To test future methods, enclose your test code between the test.startTest() and test.stopTest() test methods.
1) Making callouts to external web services.
i.e. When we are making callouts to external web services from a trigger or after performing a DML operation, we must use a future or queueable method.
2) Process we want to run in its separate thread in the back-end.
i.e. When we are working on some sort of resource consuming calculation or processing of records.
3) Isolating DML operations on different types of sObject.
i.e. When we are performing DML on setup and non-setup sObject types, it isolates DML to prevent the "Mixed DML Errors".
Future Method Syntax:
global class FutureClass {
@future
public static void futureMethod(List<Id> recordIds) {
List<Account> accounts = [Select Id, Name from Account Where Id IN :recordIds];
// process account records to do awesome stuff
}
}
Future Method Considerations
1) Future methods must be static methods and return a void.
2) Parameters must be primitive data types, arrays of primitive data types, or collections of primitive data types.
Note:- Future methods can’t take standard or custom objects as arguments.
3) Common pattern is to pass a List<record IDs> that you want to process asynchronously.
4) Future methods can’t be used in Visualforce controllers in getMethod(), setMethod(), nor in the constructor.
5) You can’t call a future method from a future method.
6) You can not invoke a trigger that calls a future method while running a future method.
7) The getContent() and getContentAsPDF() methods can’t be used in future method.
8) You’re limited to 50 future calls per Apex invocation.
9) To test future methods, enclose your test code between the test.startTest() and test.stopTest() test methods.
No comments:
Post a Comment