Fluxos de trabalho do Discourse

Parece ser o próprio sistema de expressões JavaScript do Discourse Workflows, avaliado no lado do servidor em um ambiente isolado (sandbox), em vez de uma linguagem de templates separada, como Liquid ou Handlebars.

Portanto, por exemplo:

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

funciona porque o conteúdo de {{ ... }} é avaliado como JavaScript, e toLowerCase() é o método normal de string do JavaScript.

A implementação está em plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; ela expõe globais específicos de fluxo de trabalho, como $json, $input, $itemIndex, $trigger, $execution e $().

A sintaxe e os conceitos são bastante semelhantes aos do n8n. Há, na verdade, uma referência explícita ao n8n em outro lugar no código-fonte dos Workflows:

o commit oneboxed abaixo adicionou o comportamento de combinação do nó de mesclagem (merge-node) e inclui um teste descrito como:

defaults clash handling to add_suffix (matches n8n position combine)

Portanto, há evidências de que partes dos Workflows correspondem deliberadamente ao comportamento do n8n, embora eu não tenha encontrado nada que diga explicitamente que a própria linguagem de expressões é copiada ou baseada no n8n. Portanto, eu a descreveria como expressões JavaScript em sandbox fornecidas pelo Discourse Workflows, com algumas convenções semelhantes às do n8n.

3 Curtiram