本文主要介紹云工作流的一些基本概念, 方便在在云工作流使用過程中能夠理解對應的術語。
一、云工作流
云工作流(CloudFlow)是一種用于協調、管理和執行多個分布式任務的服務。在使用時, 可以基于Workflow Studio進行可視化的方式設計、編排工作流程,將不同的服務、API調用或者數據處理步驟組織成有序的工作流程。
二、標準工作流
標準(Standard)工作流具備執行步驟狀態的持久化存儲,支持運行長時間的工作流執行狀態流轉,適用于傳統意義上的離線業務流程編排執行場景。更多信息,請參見標準工作流和快速工作流。
三、快速工作流
快速(Express)工作流適用于流程結構簡單、需要低延遲執行的工作流場景, 適用于常見的在線業務流程編排和準實時業務流程編排場景,例如微服務API編排、流式數據處理等低延遲和大負載業務場景。 更多信息,請參見標準工作流和快速工作流。
四、工作流集成
云工作流實現了天翼云在的幾乎所有產品的API集成。在云工作流中編排使用天翼云產品OpenAPI主要有兩種集成方式:普通集成和優化集成。
普通集成
普通集成是指允許云工作流直接調用云產品的OpenAPI服務接口,不對這些服務接口做任何包裝處理和實現優化,共計可使用多達上萬條API服務接口。更多信息,請參見普通集成。
優化集成
優化集成是指對部分高頻使用的云產品服務接口進行包裝和優化處理,簡化接口使用難度,方便用戶在云工作流中編排使用。更多信息,請參見集成簡介。
在云工作流下可以按照三種集成模式去進行調用集成其他云服務,只有在標準工作流下可以選擇不同的集成模式去調用云服務, 快速工作流只能是請求響應模式去調用其他云服務:
請求響應模式(RequestComplete)
調用其他云服務后, 同步等待響應返回后方可進行下一個執行狀態。
等待系統回調(WaitForSystemCallback)
指定等待系統回調后, 工作流會進入到TaskSubmitted狀態, 工作流系統自身會查詢到目標調用集成服務的執行狀態(成功或者失敗)從而將工作流從TaskSubmitted等待狀態轉換為TaskSuccess狀態或者TaskFailed狀態, 繼續工作流執行執行下一個狀態。
等待任務令牌(WaitForTaskToken)
指定等待任務令牌后, 工作流會進入到TaskSubmitted狀態。用戶可通過OpenAPI在用戶自定義的業務邏輯中回調通知工作流當前任務的執行結果(成功或者失敗)從而工作流從TaskSubmitted等待狀態轉換為TaskSuccess狀態或者TaskFailed狀態, 繼續工作流執行下一個狀態。可以理解的一個場景是業務審批場景, 在業務審批節點通過或者拒絕后, 審批流程繼續執行或者終止執行。
五、流程定義語言
天翼云云工作流流程定義基于CNCF ServerlessWorkflow Specification 0.8版本進行適配優化的。其主要特征是一種基于YAML的聲明式工作流規范,用于定義由事件驅動的無服務器應用編排邏輯。它通過狀態(State)組織任務流,支持順序/并行執行(Parallel狀態)、條件分支(Switch狀態)、延時觸發(Sleep狀態)等控制邏輯,并能通過錯誤捕獲(Catch狀態)和重試機制(Retry策略)實現容錯處理。其核心特點包括與云服務事件源的無縫集成、狀態間數據傳遞(Data Input/Output)等。所有狀態(State)共享基礎屬性:名稱(name)、類型(type)、輸入輸出(Data Input/output)。通過組合這些狀態類型,可以構建出復雜的業務流程。
狀態(State)是工作流的基本執行單元,每個狀態代表流程中的一個步驟,包含輸入處理、業務邏輯執行和輸出傳遞功能。狀態之間通過轉換(transition)形成有向關系,共同構成完整的工作流。狀態可以大致分類為兩種:執行類(Operation、 Noop、 Fail、Sleep)以及流程控制類(Switch | Parallel | Foreach)。
5.1 Operation
Operation類型狀態主要是用于調用集成服務API來完成特定任務, 利用任務類型狀態可以執行一個函數調用,調用天翼云云服務API,也可以通過HTTP/HTTPS等通用協議發起第三方服務調用。
5.2 Noop
Noop類型狀態是一種特殊的Operation類型狀態, 不執行任何操作。 它主要利用場景是用于在流程編排過程中的一種占位符作用的存在。可當作空白節點或者作為數據預處理節點將輸入數據結構轉換成期望的輸出。
5.3 Fail
Fail類型狀態是一種特殊的Operation類型狀態。Fail狀態會返回失敗結果,可用于提前結束工作流執行并將執行結果置為失敗。
5.4 Sleep
用于暫停工作流執行, 可將工作流按照指定時長等待或者暫停至特定時間點后繼續執行。
5.5 Switch
可用于流程根據條件執行不同的狀態。 包含多個條件(Case)執行分支以及默認(Default)執行分支。每個條件(Case)執行分支需要包含一個條件表達式以及命中條件后跳轉(transition)的狀態。
5.6 Parallel
可用于并行執行多個狀態。 Parallel流程控制狀態定義了多個并行分支(Branches), 分支里的定義了Processor字段用于定義并行子任務, 可以是簡單的Operation等執行類節點,亦或是嵌套一個流程控制類節點(Foreach | Parallel | Switch),更復雜的場景是由Operation等執行類節點和流程控制類節點(Foreach | Parallel | Switch)組成的子工作流。
5.7 Foreach
可用于按照輸入的數組,按照迭代遍歷執行Foreach下定義Processor的子任務。 對于數組中的每個元素, 按照并行邏輯執行Foreach定義的子任務。Foreach下定義Processor的子任務 , 可以是簡單的Operation等執行類節點,亦或是嵌套一個流程控制類節點(Foreach | Parallel | Switch),更復雜的場景是由Operation等執行類節點和流程控制類節點(Foreach | Parallel | Switch)組成的子工作流。
六、數據傳遞
在工作流執行過程中,?數據傳遞(Data Passing)? 指狀態(State)之間通過結構化數據(JSON格式)實現上下文信息共享的機制。每個狀態通過輸入(Input)接收上游數據,經處理后將結果通過輸出(Output)傳遞給下游狀態,形成數據驅動的執行鏈。
七、輸入輸出
執行時會接收 JSON 文本作為輸入,并將這些輸入數據傳遞給工作流中的第一個狀態。在每個狀態中,數據以 JSON 的形式接收,通常以 JSON 的形式作為輸出傳遞給下一個狀態。
工作流第一個狀態的輸入是工作流的執行輸入
工作流下一個狀態(除第一個狀態)的輸入是上一個狀態的執行輸出
數據的輸入輸出可按照過濾方式或者直接傳遞的方式對數據進行處理
在處理輸入輸出的數據的過程中, 可直接調用云工作流提供的內置函數從而快速實現特定功能, 減少在狀態節點的編碼工作流。請參見內置函數。
八、錯誤處理
工作流執行過程中對可能出現的錯誤進行處理和管理的機制, 從而增強工作流執行的容錯性。工作流錯誤處理包含兩部分內容:錯誤重試(Retry)和錯誤捕獲(Catch)。
錯誤重試(Retry):當某個步驟或任務在執行過程中報告錯誤并且有一個Retry字段時,通過設定重試策略,系統會自動重新嘗試執行該步驟或任務,以期望通過幾次嘗試后成功完成任務。同時可以設置回避因子等參數避免重試造成避免驚群效應。
錯誤捕獲(Catch):如果某個流程步驟,即某個狀態節點在多次重試后仍然失敗,工作流可以通過捕獲錯誤來執行特定的錯誤處理邏輯, 回退到指定節點重新執行工作流, 從而確保工作流執行的穩定性。