Skip to content

UTIL_FormulaContext

Class · Group: Utilities

apex
global inherited sharing class UTIL_FormulaContext

Container for pre-built formula evaluation context classes for standard Salesforce objects.

This class provides typed context implementations for Salesforce's FormulaEval namespace, enabling dynamic formula evaluation against standard object records. These contexts can be used in any scenario requiring formula evaluation, including but not limited to:

- **Trigger Action Framework** - Entry criteria formulas on `TriggerAction__mdt`

- **Custom Business Rules** - Configurable filtering or validation logic

- **Flow Extensions** - Dynamic formula evaluation in Apex-backed Flow actions

- **Batch Processing** - Record filtering based on formula criteria

Supported Objects: Account, Contact, Lead, Opportunity, Case, Campaign, Task, Event, User, Foobar__c (test object)

Formula Variable Names:

- `oldRecord` - Record state BEFORE an operation (null when no prior state exists)

- `newRecord` - Record state AFTER an operation (null when record is being removed)

Inner classes are GLOBAL because Salesforce FormulaEval.FormulaInstance.evaluate() requires runtime access to context properties. The global visibility ensures cross-namespace access when the managed package evaluates formulas in subscriber orgs.

Why global visibility is required:

- Member variables must be accessible by FormulaEval at runtime

- For managed packages, `global` guarantees visibility across all scenarios

- Subscriber org context classes must also use `global` for the same reason

Since: 1.0

Example:

apex
// Direct usage with Formula.builder()
FormulaEval.FormulaInstance formula = Formula.builder()
    .withFormula('newRecord.AnnualRevenue > 1000000 && newRecord.Industry = "Technology"')
    .withReturnType(FormulaEval.FormulaReturnType.BOOLEAN)
    .withType(UTIL_FormulaContext.AccountContext.class)
    .build();
UTIL_FormulaContext.AccountContext context = new UTIL_FormulaContext.AccountContext();
context.setContext(null, account);
Boolean matches = (Boolean)formula.evaluate(context);

See Also: UTIL_FormulaFilter, UTIL_FormulaFilter.INT_SObjectFormulaEvaluationContext, FormulaEval.FormulaInstance


Inner Classes

ClassDescription
AccountContextFormula evaluation context for Account object.
CampaignContextFormula evaluation context for Campaign object.
CaseContextFormula evaluation context for Case object.
ContactContextFormula evaluation context for Contact object.
EventContextFormula evaluation context for Event object.
FoobarContextFormula evaluation context for Foobar__c test object.
LeadContextFormula evaluation context for Lead object.
OpportunityContextFormula evaluation context for Opportunity object.
TaskContextFormula evaluation context for Task object.
UserContextFormula evaluation context for User object.