Network

Class Network

The network class allows you execute, monitor and cancel data flows. You need to provide at least one start node to run the network. All other linked components will be retrieved automatically. If you provide more nodes, the algorithm will determine if a network has already started or not and ignore the other nodes. It is recommend to pass only one node from the network.

Inheritance
Network
Namespace: ETLBox.DataFlow
Assembly: ETLBox.dll
Syntax
    public sealed class Network
Examples
Network.Execute(source1); 
Network.Execute(source1, source2); //If source1 and source2 are in the same network, providing source2 is superflous
Task t = Network.ExecuteAsync(dest1);
t.Wait();

Constructors

Network()

Declaration
    public Network()

Network(params IDataFlowComponent[])

Declaration
    public Network(params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
IDataFlowComponent[]startNodes

Properties

Declaration
    public bool AddAutomaticVoidLinks { get; set; }
Property Value
TypeDescription
bool

AllNodes

Declaration
    public ReadOnlyCollection<IDataFlowComponent> AllNodes { get; }
Property Value
TypeDescription
ReadOnlyCollection<IDataFlowComponent>

AllowMultipleExecutions

Declaration
    public bool? AllowMultipleExecutions { get; set; }
Property Value
TypeDescription
bool?

Destinations

Declaration
    public ReadOnlyCollection<IDataFlowDestination> Destinations { get; }
Property Value
TypeDescription
ReadOnlyCollection<IDataFlowDestination>

IgnoreUnlinkedNodes

Declaration
    public bool IgnoreUnlinkedNodes { get; set; }
Property Value
TypeDescription
bool

OnCompletion

Declaration
    public Action OnCompletion { get; set; }
Property Value
TypeDescription
Action

OnException

Declaration
    public Action<Exception, string> OnException { get; set; }
Property Value
TypeDescription
Action<Exception, string>

OnInitialization

Declaration
    public Action OnInitialization { get; set; }
Property Value
TypeDescription
Action

Sources

Declaration
    public ReadOnlyCollection<IDataFlowExecutableSource> Sources { get; }
Property Value
TypeDescription
ReadOnlyCollection<IDataFlowExecutableSource>

StartNodes

Declaration
    public ICollection<IDataFlowComponent> StartNodes { get; set; }
Property Value
TypeDescription
ICollection<IDataFlowComponent>

Methods

ApplyToAllNodes(Action<IDataFlowComponent>)

Will apply the given action on all nodes in the network.

Declaration
    public Network ApplyToAllNodes(Action<IDataFlowComponent> onNode)
Parameters
TypeNameDescription
Action<IDataFlowComponent>onNode

An action that is performed on each node.

Returns
TypeDescription
Network

The current Network instance.

Cancel()

Cancel the BufferCompletion(s) on all nodes in the network, will start cancelation from the sources. This will result in all nodes canceled in the whole network.

Declaration
    public void Cancel()

Cancel(params IDataFlowComponent[])

Cancel the BufferCompletion(s) on all nodes in the network, will start cancelation from the sources. This will result in all nodes canceled in the whole network.

Declaration
    public static void Cancel(params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
IDataFlowComponent[]startNodes

The start nodes - only one node in the whole network is sufficient

Execute()

Will execute the data flow for the whole network synchronously. The network is derived from the given StartNodes (only one node of the network is needed)

Declaration
    public void Execute()

Execute(params IDataFlowComponent[])

Will execute the data flow for the whole network synchronously.

Declaration
    public static void Execute(params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
IDataFlowComponent[]startNodes

At least one node in the network that should be executed - can by any node in the network

Execute(CancellationToken)

Will execute the data flow for the whole network synchronously. The network is derived from the given StartNodes (only one node of the network is needed)

Declaration
    public void Execute(CancellationToken cancellationToken)
Parameters
TypeNameDescription
CancellationTokencancellationToken

The cancellation token to cancel the whole network when still running

Execute(CancellationToken, params IDataFlowComponent[])

Will execute the data flow for the whole network synchronously.

Declaration
    public static void Execute(CancellationToken cancellationToken, params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
CancellationTokencancellationToken

A cancellation token which cancels the whole network when still running

IDataFlowComponent[]startNodes

At least one node in the network that should be executed - can by any node in the network

ExecuteAsync()

Will execute the data flow for the whole network asynchronously. The network is derived from the given StartNodes (only one node of the network is needed)

Declaration
    public Task ExecuteAsync()
Returns
TypeDescription
Task

A task that is ran to completion when the whole network is completed.

ExecuteAsync(params IDataFlowComponent[])

Will execute the data flow for the whole network asynchronously.

Declaration
    public static Task ExecuteAsync(params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
IDataFlowComponent[]startNodes

At least one node in the network that should be executed - can by any node in the network

Returns
TypeDescription
Task

ExecuteAsync(CancellationToken)

Will execute the data flow for the whole network asynchronously. The network is derived from the given StartNodes (only one node of the network is needed)

Declaration
    public Task ExecuteAsync(CancellationToken cancellationToken)
Parameters
TypeNameDescription
CancellationTokencancellationToken

A cancellation token to cancel the whole network when running

Returns
TypeDescription
Task

A task that is ran to completion when the whole network is completed.

ExecuteAsync(CancellationToken, params IDataFlowComponent[])

Will execute the data flow for the whole network asynchronously.

Declaration
    public static Task ExecuteAsync(CancellationToken cancellationToken, params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
CancellationTokencancellationToken

A cancellation token which cancels the whole network when still running

IDataFlowComponent[]startNodes

At least one node in the network that should be executed - can by any node in the network

Returns
TypeDescription
Task

Init(params IDataFlowComponent[])

Creates a new network with the given start nodes.

Declaration
    public static Network Init(params IDataFlowComponent[] startNodes)
Parameters
TypeNameDescription
IDataFlowComponent[]startNodes

At least one or more nodes from the network. Connected nodes will be automatically collected.

Returns
TypeDescription
Network

A new Network instance.

InitAndStartWith<T>(IDataFlowSource<T>)

Declaration
    public static Network InitAndStartWith<T>(IDataFlowSource<T> source)
Parameters
TypeNameDescription
IDataFlowSource<T>source
Returns
TypeDescription
Network
Type Parameters
NameDescription
T

LinkAllErrorTo(IDataFlowDestination<ETLBoxError>)

Declaration
    public Network LinkAllErrorTo(IDataFlowDestination<ETLBoxError> errorDestination)
Parameters
TypeNameDescription
IDataFlowDestination<ETLBoxError>errorDestination
Returns
TypeDescription
Network

LinkTo<T>(IDataFlowDestination<T>)

Declaration
    public Network LinkTo<T>(IDataFlowDestination<T> destination)
Parameters
TypeNameDescription
IDataFlowDestination<T>destination
Returns
TypeDescription
Network
Type Parameters
NameDescription
T

ParallelExecute(params Network[])

Allows to execute multiple networks in parallel.

Declaration
    public static Task ParallelExecute(params Network[] networks)
Parameters
TypeNameDescription
Network[]networks

Network that should run in parallel

Returns
TypeDescription
Task

An awaitable task that completes when all networks are execute successfully.

PrintAsJson()

Declaration
    public string PrintAsJson()
Returns
TypeDescription
string

PrintAsJson(Func<DataFlowComponent, Dictionary<string, object>>)

Prints the network as a json string.

Declaration
    public string PrintAsJson(Func<DataFlowComponent, Dictionary<string, object>> propertyExtraction)
Parameters
TypeNameDescription
Func<DataFlowComponent, Dictionary<string, object>>propertyExtraction
Returns
TypeDescription
string

PrintAsNodes()

Declaration
    public NetworkNode PrintAsNodes()
Returns
TypeDescription
NetworkNode

PrintAsNodes(Func<DataFlowComponent, Dictionary<string, object>>)

Create a representation of the network using NetworkNode objects.

Declaration
    public NetworkNode PrintAsNodes(Func<DataFlowComponent, Dictionary<string, object>> propertyExtraction)
Parameters
TypeNameDescription
Func<DataFlowComponent, Dictionary<string, object>>propertyExtraction
Returns
TypeDescription
NetworkNode

The current network using NetworkNode objects

SetLogInstance(ILogger)

Declaration
    public Network SetLogInstance(ILogger logger)
Parameters
TypeNameDescription
ILoggerlogger
Returns
TypeDescription
Network

StartWith<T>(IDataFlowSource<T>)

Declaration
    public Network StartWith<T>(IDataFlowSource<T> source)
Parameters
TypeNameDescription
IDataFlowSource<T>source
Returns
TypeDescription
Network
Type Parameters
NameDescription
T