云工作流的各種狀態(State)之間需要傳遞數據,每個狀態(State)將接收來自前一狀態的輸入(Input),并返回輸出(Output),隨后將該輸出傳遞給下一個狀態(State),具體可見數據傳遞。
本章節主要介紹工作流執行(Execution)的輸入輸出以及狀態(State)的輸入輸出。
執行(Execution)的輸入輸出
執行輸入
工作流每次執行時, 需要提供工作流執行的初始化數據, 即工作流執行的輸入數據。流程編排過程中可統一用表達式" { $Context.Input} "去訪問工作流本次執行的輸入數據。 在控制臺觸發工作流執行時,可以在執行輸入按照JSON格式填寫預期的執行輸入數據以及本次輸入的執行名稱:
執行輸出
每次工作流執行成功后的工作流執行結果。 在工作流編排和執行過程中,無法通過變量訪問的方式訪問工作流執行結果。
狀態(State)的輸入輸出
狀態輸入
在工作流執行過程中, 可以通過表達式" { $.xxx.yyy } "方式訪問本次狀態的執行輸入,具體詳見數據傳遞說明。這里將上一個狀態執行的輸出作為本次狀態狀態執行的輸入。注意, 僅可以在當前狀態基本設置或者輸入設置里進行使用, 對應的字段即state.stateDataFilter.input或者functionRef.arguments, 詳流程定義介紹以及狀態流轉。
狀態輸出
在工作流執行過程中, 可以通過表達式" { $.xxx.yyy } "方式訪問本次狀態執行完成后的執行輸出,具體詳見數據傳遞說明,按照這個方式可直接訪問本次狀態執行輸出的結果。 注意,僅可以在當前狀態在輸出設置里進行使用,對應的工作流流程定義字段即state.stateDataFilter.output。
輸入輸出設置
輸入輸出過濾器對應的是工作流流程定義里面state基本結構的stateDataFilter字段。 在控制臺cloudflow studio里, 可通過輸入配置完成state.stateDataFIlter.input字段的定義, 可通過輸出配置完成state.stateDataFilter.output字段的定義。在未設置的情況下,不對輸入或者輸出進行過濾處理。關于字段的詳細說明可詳見流程定義介紹。
在輸入輸出設置里面涉及到的表達式的生命周期如下:
"{ $Context.Input }":生命周期貫穿整個工作流執行周期, 用于訪問工作流執行輸入。狀態輸入表達式
" { $.xxx.yyy } ":生命周期起始于State執行開始, 結束于State執行完成。狀態輸出表達式
" { $.xxx.yyy } ": 僅在State執行完成時可用。
說明
"{ $ }"代表輸入或者輸出的原始數據, 即全集
輸入設置
Operation類型的狀態(State), 其輸入設置是在基本設置完成的。 當Operaion類型進行輸入設置時,一般是用于設置調用云服務請求參數或者HTTP請求參數。而Switch、Foreach、Noop等狀態可用于輸入數據過濾以及輸入數據重構等場景, 在未設置的情況下, 輸入數據保持和上一個狀態輸出數據一致。
以輸入設置-使用JsonPath部分參數為例:
| 工作流流程可視化 | 工作流流程定義 |
|---|---|
|
進行工作流執行:
| 工作流執行輸入 | 狀態執行輸入 | 狀態執行輸出 |
|---|---|---|
|
以輸入設置-使用參數過濾器構造新參數為例:
| 工作流流程可視化 | 工作流流程定義 |
|---|---|
|
進行工作流執行:
| 工作流執行輸入 | 狀態執行輸入 | 狀態執行輸出 |
|---|---|---|
|
輸出設置
當狀態(State)執行完成時,可在輸出設置里對輸出數據過濾以及輸出數據重構等場景, 在未設置的情況下, 輸出數據會原始傳遞到下一個狀態作為下一個狀態執行的輸入。這里簡單介紹以以輸出設置-使用JsonPath部分參數為例進行介紹:
| 工作流流程可視化 | 工作流流程定義 |
|---|---|
|
進行工作流執行:
| 工作流執行輸入 | 狀態狀態執行輸入 | 狀態執行輸出 |
|---|---|---|
|