大师:支持Shopify Flow的编排语言
Adagio misterioso
神秘的慢板
Shopify recently unveiled a new version of Shopify Flow. Merchants extensively use Flow’s workflow language and associated execution engine to customize Shopify, automate tedious, repetitive tasks, and focus on what matters. Flow comes with a comprehensive library of templates for common use cases, and detailed documentation to guide merchants in customizing their workflows.
Shopify最近发布了新版本的Shopify Flow。商家广泛使用Flow的工作流程语言和相关的执行引擎来定制Shopify,将繁琐、重复的任务自动化,并专注于重要的事情。Flow为常见的使用案例提供了一个全面的模板库,并有详细的文档指导商家定制其工作流程。
For the past couple of years my team has been working on transitioning Flow from a successful Shopify Plus App into a platform designed to power the increasing automation and customization needs across Shopify. One of the main technical challenges we had to address was the excessive coupling between the Flow editor and engine. Since they shared the same data structures, the editor and engine couldn't evolve independently, and we had limited ability to tailor these data structures for their particular needs. This problem was significant because editor and engine have fundamentally very different requirements.
在过去的几年里,我的团队一直致力于将Flow从一个成功的Shopify Plus应用程序过渡到一个平台,旨在为整个Shopify日益增长的自动化和定制化需求提供动力。我们必须解决的主要技术挑战之一是Flow编辑器和引擎之间的过度耦合。由于它们共享相同的数据结构,编辑器和引擎不能独立发展,而且我们为它们的特殊需求定制这些数据结构的能力有限。这个问题很重要,因为编辑器和引擎的要求从根本上说非常不同。
The Flow editor provides a merchant-facing visual workflow language. Its language must be declarative, capturing the merchant’s intent without dealing with how to execute that intent. The editor concerns itself mainly with usability, understandability, and interactive editing of workflows. The Flow engine, in turn, needs to efficiently execute workflows at scale in a fault-tolerant manner. Its language can be more imperative, but it must have good support for optimizations and have at-least-once execution semantics that ensures workflow executions recover from crashes. However, editor and engine also need to play together nicely. For example, they need to agree on the type system, which is...