Analysis - Pipeline example (czech)
===================================

Tento dokument popisuje vytvoření ukázkové pipeline.

VariableGenerator
-----------------

Vytvoříme akci VariableGenerator, která bude na svém výstupu poskytovat ensemble typu Float,
obsahující tři hodnoty typu Float.

::

    vg = VariableGenerator(Variable=Ensemble(Float(), Float(1.0), Float(2.0), Float(3.0)))

Workflow
--------

Část pipeliny budeme chtít vykonávat opakovaně, vložíme ji tedy do akce Workflow.

::

    w = Workflow()

Connector
---------

Do workflow budou vstupovat položky typu Float, na vstupu FunctionAction musí být typ
Struct, pouĹľijeme tedy konektor, kterĂ˝ typ upravĂ­.

::

    c1 = Connector()
    c1.set_inputs([w.input()])
    c1.set_config(Convertor = Convertor(Struct(x=Input(0))))

FunctionAction
--------------

UvnitĹ™ workflow umĂ­stĂ­me akci FunctionAction.
Jako vstup do této akce bude sloužit vstup do akce workflou.
Pro akci FunctionAction definujeme vstupní parametry a vlastní předpis funkce.

::

    f = FunctionAction(
        Inputs=[c1],
        Params=["x"],
        Expressions=["y = 2 * x + 3"]
    )

Connector
---------

Budeme požadovat, aby na výstupu z workflou byl Struct s polozkou "z",
výstup z akce FunctionAction je Struct s polozkou y, použijeme tedy příslušný konvertor.

::

    c2 = Connector()
    c2.set_inputs([f])
    c2.set_config(Convertor = Convertor(Struct(z=Input(0).y)))

Nastavíme vstup a výstup workflow.

::

    w.set_config(
        OutputAction=c2,
        InputAction=c1
    )

ForEach
-------

Celý workflow budeme opakovaně vykonávat pomocí akce ForEach.

::

    fe = ForEach(
        Inputs=[vg],
        WrappedAction=w
    )

PrintDTTAction
--------------

Výstup budeme chtít uložit do souboru, použijeme tedy akci PrintDTTAction.

::

    pa = PrintDTTAction(Inputs=[fe], OutputFile="output.txt")

Pipeline
--------

Celá pipeline je umístěna v akci Pipeline.

::

    p = Pipeline(ResultActions=[fe])

Výsledná pipeline
-----------------

Zdrojový kód celé pipeliny vypadá tedy následovně.

::

    vg = VariableGenerator(Variable=Ensemble(Float(), Float(1.0), Float(2.0), Float(3.0)))
    w = Workflow()
    c1 = Connector()
    c1.set_inputs([w.input()])
    c1.set_config(Convertor = Convertor(Struct(x=Input(0))))
    f = FunctionAction(
        Inputs=[c1],
        Params=["x"],
        Expressions=["y = 2 * x + 3"]
    )
    c2 = Connector()
    c2.set_inputs([f])
    c2.set_config(Convertor = Convertor(Struct(z=Input(0).y)))
    w.set_config(
        OutputAction=c2,
        InputAction=c1
    )
    fe = ForEach(
        Inputs=[vg],
        WrappedAction=w
    )
    pa = PrintDTTAction(Inputs=[fe], OutputFile="output.txt")
    p = Pipeline(ResultActions=[pa])