Flussi di lavoro di Discourse

Sembra che si tratti del sistema di espressioni JavaScript di Discourse Workflows, valutato lato server in un ambiente sandbox, anziché di un linguaggio di template separato come Liquid o Handlebars.

Quindi, ad esempio:

={{ $json.topic.title.toLowerCase() }}

funziona perché il contenuto di {{ ... }} viene valutato come JavaScript e toLowerCase() è il normale metodo stringa di JavaScript.

L’implementazione si trova in plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; espone globali specifiche per i workflow come $json, $input, $itemIndex, $trigger, $execution e $().

La sintassi e i concetti sono piuttosto simili a quelli di n8n. In realtà, esiste un riferimento esplicito a n8n altrove nel sorgente di Workflows:

il commit oneboxed di seguito ha aggiunto il comportamento di combinazione del nodo merge e include un test descritto come:

defaults clash handling to add_suffix (matches n8n position combine)

Quindi ci sono prove che alcune parti di Workflows corrispondano deliberatamente al comportamento di n8n, sebbene non sia riuscito a trovare nulla che affermi esplicitamente che il linguaggio di espressione stesso sia copiato o basato su n8n. Lo descriverei quindi come espressioni JavaScript sandbox fornite da Discourse Workflows, con alcune convenzioni simili a quelle di n8n.

3 Mi Piace