Skip to content

UTIL_AsyncChain

Class · Group: Async

apex
global inherited sharing class UTIL_AsyncChain

Lightweight async chain runner for sequencing jobs with shared state, error handling, and progress tracking. Delegates to existing async and logging infrastructure.

Since: 1.0

Example:

apex
UTIL_AsyncChain.newChain('DataMigration')
    .then(new LoadDataStep())
    .then(new TransformDataStep())
    .onError(new NotifyAdminStep())
    .execute();

Methods

MethodDescription
global static UTIL_AsyncChain.StepResult failed(Exception error)Creates a failed step result from an exception, using the exception message.
global static UTIL_AsyncChain.StepResult failed(String message)Creates a failed step result with a descriptive message.
global static Map getStatus(Id chainExecutionId)Retrieves the current status of a chain execution as a map of key-value pairs.
global static UTIL_AsyncChain.ChainBuilder newChain(String chainName)Creates a new chain builder for composing a sequence of async steps.
global static UTIL_AsyncChain.StepResult succeeded()Creates a successful step result with no message.
global static UTIL_AsyncChain.StepResult succeeded(String message)Creates a successful step result with a descriptive message.
global static UTIL_AsyncChain.StepResult succeeded(String message, Object data)Creates a successful step result with a message and data payload.

Inner Classes

ClassDescription
ApiStepChain step adapter that executes any API_Outbound handler as part of an async chain.
ChainBuilderFluent builder for configuring and executing an async chain.
ChainContextShared state container passed between chain steps.
ChainStepAbstract base class for individual steps in an async chain.
StepResultImmutable result object returned by each ChainStep to indicate success or failure.

Method Details

failed

apex
global static UTIL_AsyncChain.StepResult failed(Exception error)

Creates a failed step result from an exception, using the exception message.

Parameters:

  • error (Exception) - The exception that caused the failure.

Returns: UTIL_AsyncChain.StepResult - A StepResult with success set to false, the exception message, and the exception reference.

Since: 1.0

Example:

apex
try { riskyOperation(); }
catch(Exception error) { return UTIL_AsyncChain.failed(error); }

failed

apex
global static UTIL_AsyncChain.StepResult failed(String message)

Creates a failed step result with a descriptive message.

Parameters:

  • message (String) - A human-readable description of the failure.

Returns: UTIL_AsyncChain.StepResult - A StepResult with success set to false and the provided message.

Since: 1.0

Example:

apex
return UTIL_AsyncChain.failed('Required field is blank');

getStatus

apex
global static Map<String, Object> getStatus(Id chainExecutionId)

Retrieves the current status of a chain execution as a map of key-value pairs.

Parameters:

  • chainExecutionId (Id) - The ID of the AsyncChainExecution__c record to query.

Returns: Object - A map containing executionId, chainName, status, totalSteps, completedSteps, and errorMessage. Returns null if the record is not found.

Since: 1.0

Example:

apex
Map<String, Object> status = UTIL_AsyncChain.getStatus(executionId);
String currentStatus = (String)status.get('status');

newChain

apex
global static UTIL_AsyncChain.ChainBuilder newChain(String chainName)

Creates a new chain builder for composing a sequence of async steps.

Parameters:

  • chainName (String) - A descriptive name for the chain, used in logs and status tracking.

Returns: UTIL_AsyncChain.ChainBuilder - A new ChainBuilder instance for fluent configuration.

Since: 1.0

Example:

apex
UTIL_AsyncChain.ChainBuilder builder = UTIL_AsyncChain.newChain('DataMigration');

succeeded

apex
global static UTIL_AsyncChain.StepResult succeeded()

Creates a successful step result with no message.

Returns: UTIL_AsyncChain.StepResult - A StepResult with success set to true.

Since: 1.0

Example:

apex
return UTIL_AsyncChain.succeeded();

succeeded

apex
global static UTIL_AsyncChain.StepResult succeeded(String message)

Creates a successful step result with a descriptive message.

Parameters:

  • message (String) - A human-readable description of the successful outcome.

Returns: UTIL_AsyncChain.StepResult - A StepResult with success set to true and the provided message.

Since: 1.0

Example:

apex
return UTIL_AsyncChain.succeeded('Processed 42 records');

succeeded

apex
global static UTIL_AsyncChain.StepResult succeeded(String message, Object data)

Creates a successful step result with a message and data payload. The data is serialized into the chain context between transactions, so keep it small — use record IDs or primitive values, not full SObject graphs or large collections.

Parameters:

  • message (String) - A human-readable description of the successful outcome.
  • data (Object) - Arbitrary data to pass to subsequent steps via the context. Prefer IDs and primitives.

Returns: UTIL_AsyncChain.StepResult - A StepResult with success set to true, the provided message, and data.

Since: 1.0

Example:

apex
List<Id> processedIds = new List<Id>{ record.Id };
return UTIL_AsyncChain.succeeded('Processed records', processedIds);