基本介紹
更新時間:
本文介紹了流程定義語言的基本知識和相關(guān)使用示例。
基本知識
流程定義語言FDL(Flow Definition Language)用來描述和定義業(yè)務(wù)邏輯,在執(zhí)行流程時,Serverless 工作流服務(wù)會根據(jù)流程定義依次執(zhí)行相關(guān)步驟。在FDL中,一個流程(Flow)通常包含若干步驟(Step),這些步驟可以是簡單的原子步驟,如任務(wù)(task
)、成功(succeed
)、失敗(fail
)、等待(wait
)和傳遞(pass
)等;也可以是復(fù)雜的控制步驟,如選擇(choice
)、并行(parallel
)和并行循環(huán)(foreach
)等。這些步驟可以組合使用以構(gòu)建復(fù)雜的業(yè)務(wù)邏輯,例如一個并行步驟的分支可以是一個順序步驟。同時,步驟執(zhí)行可能出現(xiàn)錯誤,但是FDL提供了錯誤重試(retry
)和捕獲(catch
)能力。
FDL 的步驟類似于編程語言中的函數(shù)(Function),組合類似于函數(shù)調(diào)用。步驟之間通過輸入(Input)和輸出(Output)傳遞數(shù)據(jù),每個步驟由本地(Local)變量保存數(shù)據(jù)。如果一個步驟包含另一個步驟,則稱外層步驟為父步驟,被包含步驟為子步驟。
在定義流程時,您可以:
- 通過傳遞(
pass
)步驟來做占位符規(guī)劃流程基本結(jié)構(gòu)。 - 通過任務(wù)(
task
)步驟去調(diào)用函數(shù)計算服務(wù)的函數(shù)。 - 如果需要等待一段時間可以通過等待(
wait
)步驟暫停流程的執(zhí)行。 - 通過選擇(
choice
)步驟來定義不同執(zhí)行路徑。 - 通過成功(
succeed
)步驟或者失敗(fail
)步驟來提前終止流程步驟。 - 通過并行(
parallel
)步驟來并行執(zhí)行多個分支。 - 通過并行循環(huán)(
foreach
)步驟來并行處理數(shù)組數(shù)據(jù)。
流程包含以下屬性:
- version(必需):流程版本,僅支持v1。
- type(必需):flow表示是流程類型。
- steps(必需):定義了流程的多個串行步驟。一個步驟執(zhí)行完成后,如果成功,則會執(zhí)行下一個步驟。如果需要提前結(jié)束,可以使用步驟的結(jié)束(
end
)屬性,或者使用成功和失敗步驟。 - inputMappings(可選):輸入映射。輸入映射中引用的
$input
是StartExecution
API請求的Input
參數(shù)。 - outputMappings(可選):輸出映射。輸入映射中的引用的
$local
是一個JSON對象,記錄了串行的每個步驟的執(zhí)行結(jié)果。說明 如果未指定輸出映射,將$local
作為最終流程輸出。 - timeoutSeconds(可選):流程超時時間。如果流程執(zhí)行超過指定的超時時間,則流程執(zhí)行超時。
示例
- 以下的示例流程包含一個任務(wù)步驟,這個步驟調(diào)用一個函數(shù)計算的函數(shù)。
version: v1 type: flow steps: - type: task name: hello resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
- 以下示例流程包含兩個子步驟(
step1
和step4
),其中第一個步驟(step1
)又包含了兩個子步驟(step2
和step3
)。version: v1 type: flow steps: - type: parallel name: step1 branches: - steps: - type: pass name: step2 - steps: - type: pass name: step3 - type: pass name: step4
更多信息
流程定義語言的特性,請參見以下文檔:
文檔內(nèi)容是否對您有幫助?