AsyncParallelBatchNode<I, O> class

A class for defining nodes that process a batch of items asynchronously and in parallel.

This class matches Python's AsyncParallelBatchNode behavior:

  • prepAsync() returns a list of items to process
  • execAsync(item) processes a single item (override this in subclasses)
  • The base class handles parallel execution using Future.wait
  • postAsync() receives the list of results

Example:

class ParallelProcessor extends AsyncParallelBatchNode<int, int> {
  @override
  Future<List<int>> prepAsync(Map<String, dynamic> shared) async {
    return shared['numbers'] as List<int>;
  }

  @override
  Future<int> execAsync(int item) async {
    await Future.delayed(Duration(milliseconds: 100));
    return item * 2;
  }

  @override
  Future<String> postAsync(
    Map<String, dynamic> shared,
    dynamic prepResult,
    dynamic execResult,
  ) async {
    shared['results'] = execResult;
    return 'processed';
  }
}
Inheritance

Constructors

AsyncParallelBatchNode([AsyncParallelBatchItemExecFunction<I, O>? execFunction])
Creates a new AsyncParallelBatchNode.

Properties

hashCode → int
The hash code for this object.
no setterinherited
log ↔ void Function(String)
A function for logging messages.
getter/setter pairinherited
maxRetries → int
The maximum number of times to retry the exec method upon failure. A value of 1 means the exec method will be attempted once. A value of 2 means it will be attempted once, and if it fails, it will be retried once more.
finalinherited
name ↔ String?
The unique name of the node.
getter/setter pairinherited
params ↔ Map<String, dynamic>
The parameters for the node.
getter/setter pairinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
successors → Map<String, BaseNode>
The successor nodes.
finalinherited
wait → Duration
The duration to wait between retries. If maxRetries is greater than 1, this is the amount of time the node will pause before re-attempting the exec method.
finalinherited

Methods

clone() → AsyncParallelBatchNode<I, O>
Creates a copy of this AsyncParallelBatchNode.
override
createInstance() → BaseNode
Creates a new instance of AsyncParallelBatchNode.
override
exec(dynamic prepResult) → Future
The main execution logic for the node.
inherited
execAsync(dynamic prepResult) → Future<List<O>>
Executes the batch processing in parallel.
override
execAsyncItem(I item) → Future<O>
Processes a single item asynchronously.
execFallback(dynamic prepResult, Exception error) → Future
A fallback method that is called when the exec method fails after all retries have been exhausted.
inherited
execFallbackAsync(dynamic prepResult, Exception error) → Future
Async fallback method for when execAsync fails after all retries.
inherited
next(BaseNode node, {String action = 'default'}) → BaseNode
Defines the next node in the sequence.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
post(Map<String, dynamic> shared, dynamic prepResult, dynamic execResult) → Future
Post-processing logic after exec.
inherited
postAsync(Map<String, dynamic> shared, dynamic prepResult, dynamic execResult) → Future
Post-processes the results after parallel execution.
override
prep(Map<String, dynamic> shared) → Future
Pre-processing logic before exec.
inherited
prepAsync(Map<String, dynamic> shared) → Future<List<I>>
Prepares the batch of items for processing.
override
run(Map<String, dynamic> shared) → Future
Sync run method delegates to runAsync for compatibility.
inherited
runAsync(Map<String, dynamic> shared) → Future
Async version of run that uses the async lifecycle methods.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator -(String action) → ConditionalTransition
Creates a conditional transition with the given action.
inherited
operator ==(Object other) → bool
The equality operator.
inherited
operator >>(BaseNode other) → BaseNode
Chains the current node to the other node.
inherited