The engine is in charge to :
- edit - check consistency - schedule - execute
graphs of execution independently from the context (Runtime) the graph is destined to run.
The understanding of YACS::ENGINE implementation needs a good knowledge of the basic concepts (Engine concepts):
The executor is in charge to run a graph of execution. Executor is TOTALLY independant from Node and Port implementation. The only APIs seen from YACS::ENGINE::Executor are YACS::ENGINE::Scheduler and YACS::ENGINE::Task. So, from the Executor point of view, a graph of execution is a scheduler scheduling tasks. The responsability of executor is to launch, concurrently or not, tasks selected by scheduler and to notify to tasks and to the scheduler what it is going to do and what happend during tasks' execution. There are several launching mode in executor. Here the common modes :