Flujos de trabajo de Discourse

Parece ser el propio sistema de expresiones de JavaScript de Discourse Workflows, evaluado en el servidor dentro de un entorno aislado (sandbox) y no un lenguaje de plantillas separado como Liquid o Handlebars.

Por lo tanto, por ejemplo:

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

funciona porque el contenido de {{ ... }} se evalúa como JavaScript, y toLowerCase() es el método de cadena estándar de JavaScript.

La implementación se encuentra en plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb; expone variables globales específicas del flujo de trabajo, como $json, $input, $itemIndex, $trigger, $execution y $().

La sintaxis y los conceptos son bastante similares a los de n8n. De hecho, hay una referencia explícita a n8n en otra parte del código fuente de Workflows:

el commit unificado a continuación añadió el comportamiento de combinación del nodo de fusión e incluye una prueba descrita como:

defaults clash handling to add_suffix (matches n8n position combine)

Por lo tanto, hay evidencia de que partes de Workflows coinciden deliberadamente con el comportamiento de n8n, aunque no pude encontrar nada que afirmara explícitamente que el propio lenguaje de expresiones fue copiado o basado en n8n. Por lo tanto, lo describiría como expresiones de JavaScript en un entorno aislado proporcionadas por Discourse Workflows, con algunas convenciones similares a las de n8n.

3 Me gusta