Evaluate Dynamic Formulas In Apex

by Sudipta Deb | Jun 17, 2024 | Salesforce, Salesforce Summer 24 Release | 0 comments

Sudipta Deb

Sudipta Deb

Founder of Technical Potpourri, Co-Founder of Shrey Tech, Enterprise Cloud Architect

What is Evaluate Dynamic Formulas in Apex?

"Evaluate Dynamic Formulas in Apex" is a new feature in Salesforce scheduled for release with Summer '24 (currently in beta). It allows developers to programmatically evaluate Salesforce formulas within Apex code. This means you can write code that takes a formula as input (as a string) and evaluates it based on the context you provide, similar to how formulas are evaluated in fields or rules within Salesforce.

Here are some potential benefits of this feature:

  • Real-time Calculations: Eliminate the need to store pre-calculated formula results in fields, improving efficiency.
  • Increased Flexibility: Create more dynamic logic in automations, validations, and workflows by evaluating formulas at runtime.
  • Enhanced User Experience: Build custom formula editors that leverage the power of the Salesforce formula engine.

The form you have selected does not exist.

Watch The Video Or Read The Article (Or Do Both smile)

Example Code:

Below is one sample code using Apex Cursors

public with sharing class DynamicFormula {
 public void opportunityChecker(String opportunityId){
 Opportunity singleOpp = [Select Id, Amount, ExpectedRevenue, Probability from Opportunity where Id =: opportunityId LIMIT 1];
 String formulaExpresssion = '(Amount > 10000 && Probability > 50) || (ExpectedRevenue > 20000 && Probability > 80)';
 FormulaEval.FormulaBuilder likelyConvertOpportunity = Formula.builder()
 .withType(Opportunity.SObjectType)
 .withReturnType(FormulaEval.FormulaReturnType.BOOLEAN)
 .withFormula(formulaExpresssion); 
 FormulaEval.FormulaInstance instance=likelyConvertOpportunity.build();
 Boolean formulaOutcome = (Boolean)instance.evaluate(singleOpp);
 System.Debug('Formula Result: ' + formulaOutcome);
 }
}

Explanation Of The Code

To create an instance of the formula, I have called the static method builder() in the FormulaBuilder class and passed in the context object, return type, and formula text in the code above. The formula instance was validated by calling the build() function. In the event that the validation fails, the build() method generates the FormulaValidationException exception.

To calculate the formula expression and return the result, I have used the evaluate() function of the FormulaInstance class. If the evaluation yields an error, the method generates the FormulaEvaluationException exception.

Disclaimer

This article is not endorsed by Salesforce, Google, or any other company in any way. I shared my knowledge on this topic in this blog post. Please always refer to Official Documentation for the latest information.

0 Comments

Leave a Reply

Written by Sudipta Deb

Enterprise Cloud Architect, Content Creator, 20x Salesforce Certified, 1x Google Cloud Certified, 2x Copado Certified

Related Posts

Salesforce Cancels the “Permissions in Profiles” Retirement: What It Means for Admins and Architects

Salesforce Cancels the “Permissions in Profiles” Retirement: What It Means for Admins and Architects

For the last few years, Salesforce administrators, architects, and security teams have been preparing for a major platform change: the retirement of permissions managed directly through Profiles. Salesforce had previously announced plans to move organizations toward a Permission Set–led security model, with enforcement expected to begin around the Spring ’26 timeframe.

read more...

0 Comments

Leave a Reply