Passing sObject to @future methods in Salesforce

Share on facebook
Share on twitter
Share on linkedin
The Future Annotation is used to execute a method asynchronously in Salesforce. For example, we can use the future method to make a Web Service callout from an Apex Trigger.

Future Annotation:

The Future Annotation is used to execute a method asynchronously in Salesforce. For example, we can use the future method to make a Web Service callout from an Apex Trigger.  Methods with the future annotation must be static and can only return void data type. The parameter must beprimitive data types, arrays of primitive data types, or collections of primitive data types.

Example:

global class MyFutureClass {

 @future
 static void myMethod(String a, Integer i) {
   System.debug('Method called with: ' + a + ' and ' + i);
   // Perform long-running code
 }
}

For Making the callout from the future methods, we need to set (Callout = true)

Example:

@future (callout=true)

 public static void doCalloutFromFuture() {
  //Add code to perform callout
}

In this article, I have explained the steps to pass an sObject list to future methods. Normally, we cannot pass the sObject list to the future methods. We can only pass the primitive data types to the future methods, but by using the simple technique, we can overcome this limitation with Salesforce.

AccountTrigger

Trigger AccountTrigger_AT on Account (after insert){

   //Using JSON.Serialize method we can convert the account list to Json

String jsonString = json.serialize(Trigger.NEW);

  // Pass the JSON String to the Future method

AccountTriggerHandler_AC.processAccountData(jsonString);

}

AccountTriggerHandler_AC

Public class AccountTriggerHandler_AC

{
   @future

   public static void processAccountData(String jsonString){

 //deserialize the JSON to the Account List

      List<Account> accountList = (List<Account>)Json.deserialize(jsonString,List<Account>.class);

//Printing the Account List

System.debug(‘---Account List---’+’accountList);

   }

   }

Conclusion:

You can neither call a method annotated with future from a method that also has the future annotation, nor call a trigger from an annotated method that calls another annotated method. Methods with the future annotation can be neither used in Visualforce controllers in either get or set methods, nor in the constructor.

Reference: Salesforce Future methods

About MST

At MST Solutions our cornerstone is to adapt, engage and create solutions which guarantee the success of our clients. The talent of our team and experiences in varied business verticals gives us an advantage over other competitors.

Recent Articles

Work with us.

Our people aren’t just employees, they are key to the success of our business. We recognize the strengths of each individual and allow them time and resources to further develop those skills, crafting a culture of leaders who are passionate about where they are going within our organization.