Discourse Workflows

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