工作流程總覽

Workflows 是全代管的自動化調度管理平台,可按照您定義的順序執行服務,也就是工作流程。這些工作流程可以合併服務,包括 Cloud Run 或 Cloud Run 函式上代管的自訂服務、 Google Cloud Vision AI 和 BigQuery 等服務,以及任何以 HTTP 為基礎的 API。

將工作流程納入解決方案後,您就能明確瞭解服務依附元件,並進行端對端觀察。指定應用程式、作業或業務流程的工作流程,可為該流程提供可靠的資訊來源或標準敘述。

Workflows 採用無伺服器架構,可視需要擴充資源,閒置時不會產生費用。由於工作流程不含程式碼或程式庫依附元件,因此不需要安全性修補程式。部署工作流程後,工作流程就能穩定執行,不需維護。工作流程最多可保留狀態、重試、輪詢或等待一年。

Workflows 符合這些 認證和標準

下圖顯示使用 Workflows 協調服務的範例:

使用 Workflows 自動化調度管理服務

主要用途

Workflows 支援多種用途。舉例如下:

服務自動調度管理 結合服務來建立解決方案:在多個系統中執行一連串作業,並等待所有作業完成。可由事件觸發。舉例來說:
  • 將新上傳的檔案傳送至 Vision AI,然後將標記寫入 Firestore
  • 呼叫 Cloud Run 函式,並將結果傳送至 Cloud Run 服務
Batch 工作 對多個項目執行作業:對一組項目或批次資料執行作業。通常會排定時間。舉例來說:
  • 每天傳送客戶電子郵件
  • 準備及執行 BigQuery 或機器學習工作
  • 產生報表
業務程序 自動執行業務工作流程:對業務流程中的步驟進行編碼,包括條件、動作和人為介入事件。舉例來說:
  • 追蹤訂單從要求到完成的狀態
  • 自動化處理資源要求 (需經過核准)
IT 流程自動化 服務作業的受管理執行作業:輕鬆編寫 服務作業 Google Cloud 的序列指令碼。例如:
  • 佈建新的租戶專案或基礎架構
  • 依時間表或透過事件觸發條件調降資源

核心概念

工作流程是由一系列步驟組成,這些步驟使用 Workflows 語法描述,且可採用 YAML 或 JSON 格式編寫。這是工作流程的定義。如需 Workflows 語法的詳細說明,請參閱「語法參考資料」。

建立工作流程後,系統會部署工作流程,讓工作流程準備執行。瞭解如何使用 Google Cloud 控制台或 Google Cloud CLI 建立及更新工作流程。您也可以使用偏好的 IDE 或原始碼編輯器建立工作流程,並設定自動完成和語法驗證

「執行作業」是指單次執行工作流程定義中包含的邏輯。如果工作流程尚未執行,就不會產生任何費用。所有工作流程執行作業都是獨立的,而且產品可快速調度資源,因此能同時執行大量作業。您可以使用用戶端程式庫、在 Google Cloud 控制台中使用 Google Cloud CLI,或使用 Workflows REST API 將 HTTP POST 要求傳送至工作流程的叫用 URL,以執行工作流程。詳情請參閱「執行工作流程」。

區域性

Workflows 是區域性服務,工作流程是區域性資源,受資源位置限制約束。您可以使用資源位置政策控管資料落地權

請注意,工作流程部署到特定區域後,只會在該區域執行;不過,如果工作流程發出任何 HTTP 要求或使用連接器,HTTP 呼叫可能不會來自相同區域。

主要功能

以下列舉 Workflows 的幾項主要功能。

執行控制

步驟
如要建立工作流程,請使用 Workflows 語法定義必要步驟和執行順序。每個工作流程至少要有一個步驟。根據預設,工作流程會將步驟視為有序清單,並逐一執行,直到所有步驟都執行完畢為止。詳情請參閱步驟
條件
您可以將 switch 區塊做為選取機制,讓運算式的值控制工作流程的執行流程。詳情請參閱「條件」。
疊代作業
您可以使用 for 迴圈,逐一處理一系列數字或資料集合 (例如清單或對應)。詳情請參閱「疊代」。
平行步驟
您可以使用 parallel 步驟定義工作流程的一部分 (分支或迴圈),這些部分可以同時執行。詳情請參閱平行步驟
子工作流程
子工作流程的運作方式與程式設計語言中的常式或函式類似,可讓您封裝工作流程會重複執行的步驟或步驟集。詳情請參閱「子工作流程」。

觸發執行作業

手動
您可以透過 Google Cloud 控制台或指令列 (使用 Google Cloud CLI) 管理工作流程。您也可以透過 Google Cloud 控制台
,在編輯工作流程語法時查看視覺化結果。
程式輔助
您可以使用 Workflows API 的 Cloud 用戶端程式庫或 REST API 管理工作流程。詳情請參閱「Workflows API 和參考資料」。
已排定
您可以使用 Cloud Scheduler,按照特定時間表執行工作流程,例如每週一上午 9 點或每 15 分鐘執行一次。詳情請參閱使用 Cloud Scheduler 排定工作流程
執行階段引數
如要存取在執行階段傳遞的資料,請在主要工作流程中新增 params 欄位 (放在 main 區塊中)。main 區塊接受單一引數,即任何有效的 JSON 資料型別。params 欄位會命名工作流程用來儲存您傳入資料的變數。詳情請參閱「執行階段引數」。

連結服務

HTTP API
您可以定義工作流程步驟,發出 HTTP 呼叫,並將呼叫的回應指派給變數。舉例來說,您可以透過 HTTP 要求叫用 Cloud Run Functions 或 Cloud Run 等服務。 Google Cloud系統支援 HTTP 和 HTTPS 要求。詳情請參閱「發出 HTTP 要求」和「叫用 Cloud Run functions 或 Cloud Run」。
您可以搭配使用 Service Directory 的服務登錄檔和 Workflows,從工作流程執行作業指定 HTTP 呼叫的私人端點。這樣一來,您就能為工作流程提供 Service Directory 服務名稱。工作流程執行作業會使用從服務登錄檔擷取的資訊,傳送適當的 HTTP 要求,而不會輸出至公用網路。詳情請參閱「使用 Service Directory 的服務登錄檔叫用私有端點」。
或者,您也可以叫用受 Identity-Aware Proxy (IAP) 保護的端點。 透過 HTTPS 存取的應用程式可經由 IAP 建立中央授權層,因此,您可以使用應用程式層級的存取權控管模型,而非依賴網路層級的防火牆。詳情請參閱「叫用 IAP 保護的端點」。
在虛擬私有雲 (VPC) 網路中建立私人端點時,您可以設定服務安全防護範圍,並搭配使用 VPC Service Controls 和 Workflows,降低資料外洩風險。
連接器
工作流程會發布連接器,可用於在工作流程中連線至其他 Google Cloud API,並將工作流程與這些 Google Cloud 產品整合。這些函式庫會處理要求格式化作業,並提供方法和引數,因此您不必瞭解Google Cloud API 的詳細資料,即可簡化服務呼叫作業。詳情請參閱「瞭解連接器」一文。
標準程式庫和環境變數
您可以使用 Workflows 標準程式庫、內建環境變數和使用者定義的環境變數,有效建構服務的引數並處理回應。
標準程式庫包含模組和常用函式,例如用於資料類型和格式轉換的函式。您不必在工作流程中匯入或載入程式庫,程式庫函式會立即運作。詳情請參閱「標準程式庫總覽」。
您可以使用內建環境變數,存取工作流程的環境資訊 (例如位置或專案 ID)。內建環境變數不需要宣告,且適用於每個工作流程執行作業。詳情請參閱「內建環境變數」。
部署工作流程時,您可以將任意鍵和值字串組合設為使用者定義的環境變數,供工作流程在執行階段存取。舉例來說,您可以建立工作流程,根據部署環境動態設定。詳情請參閱「使用環境變數」。

處理錯誤

您可以運用 Workflows 的例外狀況處理功能 (包括自動重試 HTTP 呼叫並採用指數輪詢、自訂錯誤處理常式和其他進階功能),讓工作流程具備復原能力,並在發生失敗時自訂工作流程的行為。詳情請參閱「工作流程錯誤」。

等待中

工作流程執行作業可透過回呼,等待其他服務向回呼端點發出要求;該要求會繼續執行工作流程。透過回呼,您可以向工作流程發出信號,表示已發生指定事件,並等待該事件,不必輪詢。詳情請參閱「使用回呼等待」。

您可以在工作流程定義中新增休眠步驟,暫停執行工作流程。接著,您可以使用 sys.sleep,以指定間隔輪詢資料。詳情請參閱「使用輪詢等待」。

驗證和存取控管

由於每次執行工作流程都需要經過驗證的呼叫,因此您可以使用 Workflows 降低意外或惡意呼叫的風險。您也可以使用 Google Cloud 以 IAM 為基礎的服務帳戶,簡化與其他 API 的互動,並使用 Secret Manager 連接器安全地儲存金鑰和密碼,以便向外部 API 進行驗證。詳情請參閱驗證存取控管

觀測能力

工作流程會自動在 Cloud Logging 中產生工作流程執行的執行記錄。您也可以透過呼叫記錄或自訂記錄,在工作流程執行期間控制記錄傳送至 Logging 的時機。詳情請參閱「將記錄傳送至 Cloud Logging」。

稽核記錄資訊會顯示在 Cloud 稽核記錄中。詳情請參閱工作流程工作流程執行作業的稽核記錄資訊。

您可以擷取特定工作流程執行的記錄,做為步驟項目的清單。每個項目代表工作流程執行中的步驟或指令區塊。步驟項目可協助您判斷錯誤來源,或提升工作流程效能。

程式碼範例

您可以在範例頁面上找到許多實用的 Workflows 程式碼範例。

後續步驟