为什么需要“𝚞𝚜𝚎 𝚜𝚝𝚎𝚙”? 有人指出,工作流程中的步骤就像视频游戏中的“生成检查点”。这个比喻很好。 将一个函数标记为“𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠”的一个有趣结果是,除了步骤之外,你不允许进行输入/输出操作。 工作流程需要是无副作用和确定性的。每次你𝚊𝚠𝚊𝚒𝚝的函数必须是一个步骤。 这些函数调用可以被视为可序列化的延续。这些函数的输入和输出被记录到日志中。想想JSON。 如果你有一个包含3个步骤的工作流程,而最后一个步骤失败了,我们必须能够“重新运行”整个函数,并对世界的状态有一个完美的把握。 通过这种方式,“𝚞𝚜𝚎 𝚜𝚝𝚎𝚙”实际上与“𝚞𝚜𝚎 𝚌𝚊𝚌𝚑𝚎”或“𝚐𝚎𝚝𝚂𝚝𝚊𝚝𝚒𝚌𝙿𝚛𝚘𝚙𝚜”非常相似——这些函数可以在空间和时间上被外部化和隔离,在不同的“计算机”中运行。