為什麼需要「𝚞𝚜𝚎 𝚜𝚝𝚎𝚙」? 有人指出,工作流程中的步驟就像視頻遊戲中的「生成檢查點」。這是一個很好的類比。 標記一個函數為「𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠」的一個有趣後果是,除了步驟之外,你不允許進行任何 I/O 操作。 工作流程需要是無副作用和確定性的。每次你 𝚊𝚠𝚊𝚒𝚝 的函數必須是一個步驟。 這些函數調用可以被視為可序列化的延續。這些函數的輸入和輸出被記錄到日誌中。想想 JSON。 如果你有一個包含 3 個步驟的工作流程,而最後一個步驟失敗了,我們必須能夠「重新運行」整個函數,並對世界的狀態有完美的掌握。 這樣,「𝚞𝚜𝚎 𝚜𝚝𝚎𝚙」實際上與「𝚞𝚜𝚎 𝚌𝚊𝚌𝚑𝚎」或「𝚐𝚎𝚝𝚂𝚝𝚊𝚝𝚒𝚌𝙿𝚛𝚘𝚙𝚜」非常相似——這些函數可以在空間和時間上被外部化和隔離,運行在不同的「計算機」上。