File: actors.rst

package info (click to toggle)
python-ewoksppf 1.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 336 kB
  • sloc: python: 2,673; makefile: 2
file content (64 lines) | stat: -rw-r--r-- 1,969 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

Implementation notes
====================

Graph of actors
---------------
An Ewoks task graph is converted to a graph of *actors* before execution.

Source
^^^^^^
A task is wrapped by an *EwoksPythonActor* followed by some binder actors, depending on the type of link between source and target. For each link in the task graph, the final actor of the source is a *NameMapperActor* which is connected to the target.

Unconditional link

.. mermaid::

   graph LR;
   EwoksPythonActor-->NameMapperActor;

Conditional link with one condition

.. mermaid::

   graph LR;
   EwoksPythonActor-->ConditionalActor;
   ConditionalActor-->NameMapperActor;

On-Error conditional link

.. mermaid::

   graph LR;
   EwoksPythonActor-->NameMapperActor;

Target
^^^^^^

.. mermaid::

   graph LR;
   InputMergeActor-->EwoksPythonActor;

The *NameMapperActor* of a source for a specific target is connected to the *InputMergeActor* before that target.

Start actor
^^^^^^^^^^^
The *StartActor* is connected to all tasks that are the start of a task scheduling thread.

Stop actor
^^^^^^^^^^
Tasks without successors are connected to the *StopActor*. This actor manages a dictionary of outputs which is considered to be the "output of the graph".

Error handler
^^^^^^^^^^^^^
All actors that do not have an _on_error_ conditional link are connected to the *ErrorHandler* which directly connected to the *StopActor*.

Custom actors
^^^^^^^^^^^^^
These actors are not provided by *pypushflow*

* *EwoksythonActor*: like *PythonActor* but it passes node name and attributes to the next actor.
* *InputMergeActor*: like *Joinactor* (merges the input data dictionaries) triggers the downstream actors when all required input has been provided at least once. Only one non-required input passed.
* *ConditionalActor*: triggers downstream actors when all conditions are fulfilled.
* *NameMapperActor*: before triggering the next task it applies filtering and name mapping to the input data.