UTIL_AsyncChain
Class · Group: Async
global inherited sharing class UTIL_AsyncChainLightweight 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:
UTIL_AsyncChain.newChain('DataMigration')
.then(new LoadDataStep())
.then(new TransformDataStep())
.onError(new NotifyAdminStep())
.execute();Methods
| Method | Description |
|---|---|
| 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
| Class | Description |
|---|---|
| ApiStep | Chain step adapter that executes any API_Outbound handler as part of an async chain. |
| ChainBuilder | Fluent builder for configuring and executing an async chain. |
| ChainContext | Shared state container passed between chain steps. |
| ChainStep | Abstract base class for individual steps in an async chain. |
| StepResult | Immutable result object returned by each ChainStep to indicate success or failure. |
Method Details
failed
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:
try { riskyOperation(); }
catch(Exception error) { return UTIL_AsyncChain.failed(error); }failed
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:
return UTIL_AsyncChain.failed('Required field is blank');getStatus
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:
Map<String, Object> status = UTIL_AsyncChain.getStatus(executionId);
String currentStatus = (String)status.get('status');newChain
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:
UTIL_AsyncChain.ChainBuilder builder = UTIL_AsyncChain.newChain('DataMigration');succeeded
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:
return UTIL_AsyncChain.succeeded();succeeded
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:
return UTIL_AsyncChain.succeeded('Processed 42 records');succeeded
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:
List<Id> processedIds = new List<Id>{ record.Id };
return UTIL_AsyncChain.succeeded('Processed records', processedIds);