handle method
Handles the input data and produces output
Override this to provide custom step logic.
The context
can be used to share data between steps.
Throws if processing fails.
Implementation
@override
FutureOr<Output> handle(Input data, ChainContext context) async {
final metrics = StepMetrics();
final startTime = DateTime.now();
try {
final result = await executeWithMetrics(data, context);
metrics
..duration = DateTime.now().difference(startTime)
..isSuccess = true;
return result;
} catch (error) {
metrics
..duration = DateTime.now().difference(startTime)
..isSuccess = false
..error = error;
rethrow;
} finally {
final existingMetrics = context.getMetadata<List<StepMetrics>>(metricsKey) ?? [];
context.addMetadata(metricsKey, [...existingMetrics, metrics]);
}
}