本文最初发布于Medium博客,经原作者 Michael Dubakov 授权由InfoQ中文站翻译并分享。
几乎所有正规的无代码工具都应该具备某种程度的自动化能力。自动化是高效系统的基础,它可以帮助人们提高生产力。系统的第一阶段肯定是数据收集,而第二阶段就是自动化。
我们正在考虑在Fibery(https://fibery.io/)中实现自动化,因为Fibery中的数据收集问题似乎已接近完善。但是,创建自动化操作是非常困难的,因为它非常接近编程的形态。在本文中,我简要回顾了在系统中添加自动化层的所有可行方法。如有补充意见请随意发表评论。
你必须向计算机说明你需要什么样的自动化流程,并且要阐述得足够精确,以免误导计算机。任何模糊不清的部分都会带来错误和不良后果的代价。
##当前解决方案
最低层的方法就是代码。脚本语言已在HyperCards、FileMaker等许多软件工具中广泛使用。它提供了巨大的灵活性,但也存在很高的入门门槛,只有程序员才能完全掌握它。
使用HyperCard脚本语言来编程行为
我们可以使用图形块+文本来表示代码。例如Scratch(https://scratch.mit.edu/)就使用了这种方法,小朋友们很容易就能掌握它。
一般来说,这种系统的能力可以与低代码解决方案相提并论,因为你依然可以使用所有编程语言构造进行操作。这里的好处是更清晰地确定范围并预防不良的组合。例如,你不能将某些块插入另一个块中,因为它们的形状是不同的。这样可以避免某些错误。
缺点是对于大型程序来说这种方法很难掌握。但只要自动化的规则足够简单,这种方法使用起来就完全没有障碍。
“家庭自动化”
我们可以创建一种仅用于自动化目的的特殊语言。在这种情况下,知识工作者就能更容易掌握自动化操作,因为你可能使用熟悉的术语并限制语言的灵活性。例如,一般人很难理解迭代器和递归,更不用说要调试它们了,因此DSL可能会将这类构造包装成不太复杂的东西。
When Task.State.Name is “Coded”
Then GitLab["Profile"].Create.PullRequest(Task.Id + Task.Name)
这种方法可能很有前途,但对于大多数人而言,控制台界面是很难用的。看来这应该是其他解决方案的后备选项。
像Siri这样的工具展现出了一些可能性。一般来说,有些人会使用它来执行诸如设置会议时间或发送电子邮件之类的操作。但这并不算在自动化的范畴之内。NLP可以用来描述自动化的需求,但这即使在概念上也是很难做到的,更不要说还得考虑种种技术难题。我们必须将人类文本转换为正式的较低层结构(例如DSL),这很难做到。不过NLQ(https://community.microstrategy.com/s/article/Natural-Language-Query-in-A-Nutshell-MicroStrategy-11-0?language=en_US)中有一些尝试看起来很有趣。
Forms是最流行的自动化规则设计方法之一。像IFTT和Zapier之类的众多系统都遵循这种方法,并且都非常成功。
人们很熟悉点击界面,因此可以很自然地将这种方法用在所有事情上。
问题在于自动化规则是一种算法,而不是静态结构。而且很难使用静态图像和静态UI来可视化诸如算法之类的动态事物。你必须能通过UI的一些视觉提示来在头脑中重现整个流程。
Zapier自动化流程
Fibery.io原型
我们可以向系统“展示”我们想要做什么,并“记录”一个手动流程以将其转换为自动化流程。例如,Photoshop的宏就可以记录并执行用户在很多图像上执行的操作。
对于单个系统,这似乎是一种可行的方法,但是对于多个系统,这几乎是没有可行性的。
例如,我们可以将Fibery中的多个动作合并为一个:
这是一个简单的情况,其中我们选择的是确切的值,因此可以记录这个流程并点击一次即可执行。假设我们创建了一个“计划”按钮,点击这个按钮后就会执行上述操作。
但情况可能会复杂得多:
总体来说,我们希望将所有与搜索相关的错误指定给Vadim,但系统不会理解这种阐述。如果我们要创建这个宏,那么在宏里阐明我们所需的内容可能要比从头开始制定所有规则来得更容易一些。想象一下,我们可以编辑宏并为实体的创建设置条件(过滤器?),例如Name.Contains(“Search”)。
你可以使用伪代码或块模式来组装自动化规则。这里的优点是它能以某种方式可视化流。你可以想象实体通过一些条件和动作,从最高状态流向最低状态。它仍然是一种抽象表示,几乎没有在基本文本之上添加任何有用的东西。实际上,你可以想象每一行文本都是下一个步骤,并且具有非常相似的表示形式,但有一处不同——那就是条件逻辑。在块模式中查看逻辑分支要容易得多:
此外,在这里我们具有可以直接操作的DnD界面,它更接近所见即所得的原理。基本上,你要为算法的每个步骤命名,因此可以更好地了解此处正在发生的事情。但是,每个步骤的细节都有所隐藏,因此对于高级用户而言,这可能不是创建自动化操作的最快方法。
你可以使用块来创建高级流程,并使用Form UI指定块的细节。
Tray.io混合方法
你可以使用块来创建整体流程,但是每个块内部都有DSL或代码。这样你就将算法/流的创建分解成了许多可管理的部分,而且看上去可能根本就不像是编程。Fibery中的公式就是这种方法的一个例子,并且这种水平的复杂性可能会足够低,让很多人都能创建自动化流程。
Michael Dubakov是Fibery创始人,也为系统、软件开发和产品主题撰写文章。
原文链接:
https://medium.com/@mdubakov/automations-concepts-overview-for-no-code-tools-8a922ede9bde
领取 专属20元代金券
Get大咖技术交流圈