Il semble s’agir du système d’expressions JavaScript propre à Discourse Workflows, évalué côté serveur dans un bac à sable, plutôt que d’une langue de gabarit distincte telle que Liquid ou Handlebars.
Ainsi, par exemple :
={{ $json.topic.title.toLowerCase() }}
fournit le résultat attendu car le contenu de {{ ... }} est évalué en tant que JavaScript, et toLowerCase() est la méthode de chaîne JavaScript standard.
L’implémentation se trouve dans plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb ; elle expose des variables globales spécifiques aux flux de travail telles que $json, $input, $itemIndex, $trigger, $execution et $().
La syntaxe et les concepts sont assez proches de ceux de n8n. Il y a en fait une référence explicite à n8n ailleurs dans le code source de Workflows :
l’engagement oneboxed ci-dessous a ajouté le comportement de combinaison du nœud de fusion et inclut un test décrit comme suit :
defaults clash handling to add_suffix (matches n8n position combine)
Il existe donc des preuves que certaines parties de Workflows correspondent délibérément au comportement de n8n, bien que je n’aie rien trouvé qui affirme explicitement que le langage d’expression lui-même est copié de n8n ou basé dessus. Je le décrirais donc comme des expressions JavaScript en bac à sable fournies par Discourse Workflows, avec certaines conventions semblables à n8n.