Discourse 워크플로

Discourse Workflows 자체의 JavaScript 표현식 시스템으로 보입니다. Liquid나 Handlebars와 같은 별도의 템플릿 언어가 아니라, 서버 측 샌드박스에서 평가됩니다.

예를 들어:

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

{{ ... }} 내부의 내용이 JavaScript로 평가되고, toLowerCase()가 일반적인 JavaScript 문자열 메서드이기 때문에 동작합니다.

구현은 plugins/discourse-workflows/lib/discourse_workflows/expression_resolver.rb에 있으며, $json, $input, $itemIndex, $trigger, $execution, $()와 같은 워크플로우 전용 전역 변수를 노출합니다.

구문과 개념은 n8n과 매우 유사합니다. 실제로 Workflows 소스의 다른 곳에서 n8n에 대한 명시적인 참조가 있습니다:

아래의 oneboxed 커밋은 merge-node의 combine 동작을 추가했으며, 다음과 같이 설명된 테스트를 포함합니다:

defaults clash handling to add_suffix (matches n8n position combine)

따라서 Workflows의 일부가 n8n의 동작을 의도적으로 따르고 있다는 증거는 있지만, 표현식 언어 자체가 n8n에서 복사되었거나 n8n을 기반으로 한다는 명시적인 내용은 찾지 못했습니다. 따라서 이를 Discourse Workflows가 제공하는 샌드박스된 JavaScript 표현식으로, 일부 n8n과 유사한 관례를 따르고 있다고 설명하겠습니다.

3개의 좋아요