Tento dokument byl přeložen pomocí AI. Pro přesné informace se podívejte na anglickou verzi.
Node JavaScript umožňuje uživatelům spouštět vlastní serverový JavaScriptový skript v rámci Workflow. Skript může jako parametry používat proměnné z předchozích kroků Workflow a jeho návratová hodnota může být poskytnuta následným Node.
Skript se spouští v pracovním vlákně na serveru aplikace NocoBase a podporuje většinu funkcí Node.js. Existují však určité rozdíly oproti nativnímu spouštěcímu prostředí. Podrobnosti naleznete v Seznamu funkcí.
V rozhraní Interface Configuration pro Workflow klikněte na tlačítko plus („+“) v toku a přidejte Node „JavaScript“:


Slouží k předávání proměnných nebo statických hodnot z kontextu Workflow do skriptu pro použití v logice kódu. name je název parametru, který se po předání do skriptu stane názvem proměnné. value je hodnota parametru, kterou můžete vybrat jako proměnnou nebo zadat jako konstantu.
Obsah skriptu lze považovat za funkci. Můžete napsat libovolný JavaScriptový kód podporovaný v prostředí Node.js a použít příkaz return k vrácení hodnoty jako výsledku spuštění Node, kterou pak mohou následné Node použít jako proměnnou.
Po napsání kódu můžete kliknout na tlačítko „Test“ pod editorem, čímž otevřete dialogové okno pro testovací spuštění. Zde můžete vyplnit parametry statickými hodnotami pro simulované spuštění. Po provedení se v dialogovém okně zobrazí návratová hodnota a obsah výstupu (logu).

Jednotkou jsou milisekundy. Hodnota 0 znamená, že není nastaven žádný časový limit.
Pokud je tato možnost zaškrtnuta, následné Node se budou provádět i v případě, že skript narazí na chybu nebo vyprší časový limit.
Pokud skript selže, nebude mít žádnou návratovou hodnotu a výsledek Node bude vyplněn chybovou zprávou. Pokud následné uzly používají proměnnou výsledku z JavaScript Node, je třeba s tím zacházet opatrně.
Stejná jako verze Node.js, na které běží hlavní aplikace.
Moduly lze ve skriptu používat s omezeními, v souladu s CommonJS, pomocí direktivy require() pro import modulů.
Podporuje nativní moduly Node.js a moduly nainstalované v node_modules (včetně závislostí již používaných NocoBase). Moduly, které mají být dostupné pro kód, musí být deklarovány v proměnné prostředí aplikace WORKFLOW_SCRIPT_MODULES, přičemž více názvů balíčků je odděleno čárkami, například:
Moduly, které nejsou deklarovány v proměnné prostředí WORKFLOW_SCRIPT_MODULES, nelze ve skriptu použít, a to ani v případě, že jsou nativní pro Node.js nebo již nainstalované v node_modules. Tato politika může být použita na provozní úrovni k řízení seznamu modulů dostupných uživatelům, což v některých scénářích zabraňuje skriptům mít nadměrná oprávnění.
V prostředí, kde není nasazení ze zdrojového kódu, pokud modul není nainstalován v node_modules, můžete požadovaný balíček ručně nainstalovat do adresáře storage. Například, pokud potřebujete použít balíček exceljs, můžete provést následující kroky:
Poté přidejte relativní (nebo absolutní) cestu k tomuto balíčku, vzhledem k CWD (aktuálnímu pracovnímu adresáři) aplikace, do proměnné prostředí WORKFLOW_SCRIPT_MODULES:
Poté můžete balíček exceljs použít ve svém skriptu:
Nepodporuje globální proměnné jako global, process, __dirname a __filename.
Parametry nakonfigurované v Node se stávají globálními proměnnými ve skriptu a lze je přímo používat. Parametry předávané skriptu podporují pouze základní typy, jako jsou boolean, number, string, object a pole. Objekt Date bude po předání převeden na řetězec ve formátu ISO. Jiné komplexní typy, jako jsou instance vlastních tříd, nelze přímo předávat.
Pomocí příkazu return lze vrátit data základních typů (stejná pravidla jako pro parametry) zpět do Node jako jeho výsledek. Pokud v kódu není volán příkaz return, spuštění Node nebude mít žádnou návratovou hodnotu.
Podporuje použití console pro výstup logů.
Při spuštění Workflow je výstup JavaScript Node také zaznamenán do souboru protokolu odpovídajícího pracovního postupu.
Podporuje použití async pro definování asynchronních funkcí a await pro jejich volání. Podporuje použití globálního objektu Promise.
Pokud potřebujete použít metody jako setTimeout, setInterval nebo setImmediate, je nutné je importovat z balíčku timers Node.js.