Creating new action (czech)

Tento dokument popisuje vytvoření akce FunctionAction. Akce slouží k vyhodnocení funkce zadané jako parametr akce na základě předaných parametrů.

Předek třídy

Třída byla odvozena ze třídy ParametrizedActionType, protože jde o třídu která je parametrizovaná.

class FunctionAction(ParametrizedActionType):

Jméno a popis akce

Definujeme jméno a popis třídy.

name = "Function"
"""Display name of action"""
description = "Function"
"""Display description of action"""

Metoda __init__

Metoda __init__ bude přebírat parametry Params a Expressions. Dále je volána metoda __init__ předka.

def __init__(self, **kwargs):
    """
    :param list of str Params: input parameters
        example:
        ["x1", "x2", "x3"]
    :param list of srt Expressions: function prescription
        example:
        ["y1 = 1 * x1 + 2 * x2", "y2 = 3 * x1 + 4 * x2", "y3 = sin(x3)"]
    :param action or DTT Input: action DTT variable
    """
    super().__init__(**kwargs)

Metoda _inicialize

Metoda _inicialize inicializuje proměné akce. Nastaví stav akce na ActionStateType.initialized.

self._set_state(ActionStateType.initialized)

Zavolá metodu self._process_base_hash() pro vytvoření hashe ze základních údajů o třídě.

self._process_base_hash()

Přidá vlastní parametry do hashe.

if 'Params' in self._variables and \
        isinstance(self._variables['Params'], list):
    for par in self._variables['Params']:
        self._hash.update(bytes(par, "utf-8"))
if 'Expressions' in self._variables and \
        isinstance(self._variables['Expressions'], list):
    for ex in self._variables['Expressions']:
        self._hash.update(bytes(ex, "utf-8"))

A nastaví výstup akce.

self._output = self.__func_output()

Metoda _get_variables_script

Metoda slouží k vygenerování pythoního skriptu seznamu “_variables”. Nejprve je volána metoda předka.

var = super()._get_variables_script()

Dále jsou přidány proměné vlastní akce a výsledek je vrácen jako návratová hodnota.

Metoda _update

Tato metoda řeší vlastní provedení akce. V našem případě zavolá výpočet funkce.

self._output = self.__func_result()

Následně vrátí None.

Metoda _check_params

Metoda zkontroluje správnost zadání parametrů, včetně jejich typů. Vrátí seznam chyb, které nastaly při kontrole.

Metoda validate

Tato metoda slouží ke kontrole, jestli předchozí akce poskytuje na svém výstupu správný typ dat. Nejprve zavolá metodu předka.

err = super().validate()

Dále pak zkontroluje typ vrácený předchozí akcí. Vrací seznam zjistěných chyb.

Metoda __get_require_params

Slouží ke zjištění seznamu parametrů, které budou očekávány na vstupu akce. Tyto parametry získá z proměné “Params”.

Metoda __parse_expressions

Metoda slouží k předpřipravení předpisu funkce. Předpis rozdělí na výstupní proměnou a vlastní předpis. Metoda vrací seznam tuplů (výstupní proměná, předpis funkce).

Metoda __func_output

Tato metoda vygeneruje z předpisu funkce výstupní datový typ akce.

Metoda __func_result

Provede vlatní vyhodnocení funkce na základě parametrů předaných předchozí třídou.