com.coxautodata.waimak.dataflow
Executes as many actions as possible with the given DAG, stops when no more actions can be executed.
Executes as many actions as possible with the given DAG, stops when no more actions can be executed.
initial state with actions to execute and set inputs from previous actions
whether to throw an exception if some actions on the flow did not execute. Default is true
(Seq[EXECUTED ACTIONS], FINAL STATE). Final state does not contain the executed actions and the outputs of the executed actions are now in the inputs
Used to report events on the flow.
Used to report events on the flow.
Action scheduler used to run actions
Action scheduler used to run actions
Takes a value of type A and a msg to log, returning a and logging the message at the desired level
Takes a value of type A and a msg to log, returning a and logging the message at the desired level
a
Takes a value of type A and a function message from A to String, logs the value of invoking message(a) at the level described by the level parameter
Takes a value of type A and a function message from A to String, logs the value of invoking message(a) at the level described by the level parameter
a
logAndReturn(1, (num: Int) => s"number: $num", Info) // In the log we would see a log corresponding to "number 1"
Determines which execution pool to schedule in and an action to schedule into it.
Determines which execution pool to schedule in and an action to schedule into it. Decision depends on: 1) slots available in the pools 2) actions available for the pools with slots 3) priority strategy that will select and change the order of the available actions
(Pool into which to schedule, Action to schedule)
A complex data flow has lots of parallel, diverging and converging actions, lots of the actions could be started in parallel, but certain actions if started earlier could lead to quicker end to end execution of all of the flows and various strategies could lead to it.
A complex data flow has lots of parallel, diverging and converging actions, lots of the actions could be started in parallel, but certain actions if started earlier could lead to quicker end to end execution of all of the flows and various strategies could lead to it. This strategy will always be applied to a set of actions to schedule regardless of the scheduler implementation.
Created by Alexei Perelighin 2017/12/27
Executes one action at a time wihtout trying to parallelize them.