2using System.Collections.Generic;
4using System.Threading.Tasks;
16 public List<IPipelineStep>
Steps {
get;
private set; } =
new List<IPipelineStep>();
24 Steps =
new List<IPipelineStep>(steps);
33 public PipelineResults Run(Dictionary<string, object> inputs, Action<string> logger =
null, CancellationToken cancellationToken =
default)
35 logger?.Invoke(
"[Pipeline] Running pipeline...");
38 foreach (var step
in Steps)
40 if (cancellationToken.IsCancellationRequested)
42 logger?.Invoke(
"[Pipeline] Cancelled process.");
46 if (!step.ApplyStep(results, logger, cancellationToken))
48 logger?.Invoke(
"[Pipeline] Pipeline failed.");
54 logger?.Invoke(
"[Pipeline] Pipeline complete.");
64 public Task<PipelineResults>
RunAsync(Dictionary<string, object> inputs, Action<string> logger =
null, CancellationToken cancellationToken =
default)
66 return Task.Run(() =>
Run(inputs, logger, cancellationToken));
A class for chaining multiple IPipelineStep together.
Task< PipelineResults > RunAsync(Dictionary< string, object > inputs, Action< string > logger=null, CancellationToken cancellationToken=default)
Runs the pipeline asynchonously.
PipelineResults Run(Dictionary< string, object > inputs, Action< string > logger=null, CancellationToken cancellationToken=default)
Invokes all steps of the pipeline and returns the results.
List< IPipelineStep > Steps
A list of pipeline steps.
Pipeline(params IPipelineStep[] steps)
Initializes a new pipeline.
A container for holding pipeline results.
An interface for creating a step of a Pipeline.