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