存取工作流程執行結果

您可以透過工作流程檢查執行輸出內容、步驟狀態,以及診斷執行階段錯誤。執行工作流程後,您可以在 Google Cloud 控制台或使用 Google Cloud CLI 查看這些結果。

控制台

  1. 前往 Google Cloud 控制台的「Workflows」頁面。

    前往「Workflows」頁面

  2. 如要存取工作流程的執行結果,請按一下工作流程名稱,前往「Workflow details」(工作流程詳細資料) 頁面。

  3. 如要查看特定執行的詳細資料,請在「執行」分頁中,按一下清單中的執行 ID,前往「執行詳細資料」頁面。

  4. 在「摘要」分頁中,每次執行都會顯示下列資訊:

    • 執行作業 ID:工作流程執行作業的專屬 ID。
    • 執行狀態:指出工作流程的最終狀態,包括目前或最終的工作流程步驟。
    • 執行作業建立時間:執行作業的啟動時間。
    • 執行開始:執行作業開始執行步驟的時間。
    • 執行作業結束:執行作業結束的時間。
    • 執行時間長度:經過的總時間。這可能表示發生網路錯誤或連線問題。
    • 工作流程名稱:工作流程名稱。
    • 工作流程修訂版本:執行時的目前修訂版本。
    • 通話記錄層級:執行作業期間套用的通話記錄層級。詳情請參閱「通話記錄」。
    • 輸入:傳遞至工作流程的執行階段引數 (如有)。
    • 輸出:工作流程的輸出內容。如果執行失敗,則會包含導致執行失敗的例外狀況。請參閱本文的「執行錯誤對應表」。
  5. 如要以步驟項目的清單形式查看工作流程執行記錄,請按一下「步驟」分頁標籤。詳情請參閱「查看執行步驟記錄」。

  6. 如要查看工作流程執行的記錄,請按一下「記錄」分頁標籤。

  7. 如要篩選執行記錄,請使用表格頂端的「篩選器」欄位。舉例來說,如要只顯示執行失敗的嘗試,請在篩選器的文字欄位中輸入 failed。

gcloud

  1. 如要查看工作流程的完整執行清單,請輸入下列指令:

    gcloud workflows executions list WORKFLOW_NAME
    

    將 WORKFLOW_NAME 替換為工作流程的名稱。 複製您感興趣的執行作業 ID。

  2. 如要查看工作流程的執行記錄,請輸入下列指令:

    gcloud workflows executions describe \
        --workflow=WORKFLOW_NAME \
        EXECUTION_ID
    

    更改下列內容:

    • WORKFLOW_NAME:工作流程名稱
    • EXECUTION_ID:執行的專屬 ID

    這個指令會傳回類似以下的輸出內容:

    argument: 'null'
    endTime: '2022-07-19T12:40:07.070039707Z'
    error:
     context: |-
        The argument of 'in' must be a dict or an array; got: null
        in step "checkSearchTermInInput", routine "main", line: 12
     payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
    ,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2
    輸出內容中會包含下列資訊:

    • argument:傳遞至工作流程的執行階段引數 (如有)
    • endTime:執行結束時間
    • error:因執行失敗而擲回的例外狀況錯誤訊息
    • name:執行的完整名稱,包括專案名稱、工作流程位置、工作流程名稱和執行 ID
    • startTime:執行作業的開始時間
    • state:表示工作流程的結束狀態
    • status:執行作業的目前或最終工作流程步驟
    • workflowRevisionID:執行時的目前修訂版本

執行錯誤對應

如果工作流程在執行期間擲回錯誤,但 try/except 區塊未擷取到該錯誤,執行作業就會失敗,並傳回說明錯誤的錯誤對應 (JSON 字典)。

工作流程執行期間擲回的錯誤會包含標記,協助您找出導致錯誤的原因。舉例來說,連接器傳回的錯誤可能會有兩個鍵 (tags 和 message),類似於下列內容:

{'tags': ['SystemError'], 'message': 'an error has occurred'}

你可以新增多個標記。如要檢查特定標記,可以使用運算式。例如:

${'SystemError' in e.tags}

以字串形式傳回存取錯誤資料

部分連接器和 HTTP API 會先將錯誤序列化為字串,再傳回錯誤。您可以使用標準程式庫函式,將酬載還原為原始錯誤。舉例來說,如要將錯誤字串轉換為對應,可以使用 json.decode 和 text.encode 函式:

json.decode(text.encode(ERROR_FROM_API))

錯誤標記

下表說明不同錯誤標記的意義。

標記 說明
AuthError 產生 HTTP 要求憑證失敗時引發。
ConnectionError 當與端點成功建立連線,但在資料傳輸期間發生連線問題時,系統會引發此例外狀況。在收到完整回應前,連線就會終止,且訊息可能未傳送至端點。重試可能不是等冪。
ConnectionFailedError 當系統未與 API 端點建立連線時會引發此例外狀況;例如,由於網域名稱不正確、DNS 解析問題或其他網路問題。重試作業是冪等作業。
HttpError 當 HTTP 要求失敗並傳回 HTTP 錯誤狀態時,系統會引發這個例外狀況。引發這項例外狀況時,回應會是包含下列元素的對應:
  • tags:包含 HttpError 字串的清單
  • message:人類可讀的錯誤訊息
  • code—HTTP 回應狀態碼
  • headers - 回應標頭
  • body - 回應主體
IndexError 當序列下標是超出範圍的整數時,就會引發此例外狀況。
KeyError 當現有鍵集中找不到對應鍵時,就會引發這個例外狀況。
OperationError 長時間執行的作業未順利完成時引發。
ParallelNestingError 當平行步驟可巢狀化的最大深度超過時,就會引發此例外狀況。
RecursionError 當解譯器偵測到 呼叫堆疊深度超出上限時,就會引發此錯誤。
ResourceLimitError 當某些資源用盡時會引發此例外狀況。在內部引發時,這類錯誤無法擷取,會導致立即執行失敗。
ResponseTypeError 當長時間執行的作業傳回錯誤類型的回應時,就會引發這個例外狀況。
SystemError 解譯器發現內部錯誤時會引發此例外狀況。
TimeoutError 系統函式在系統層級逾時時引發。
TypeError 當作業或函式套用至不相容型別的物件時,就會引發此例外狀況。關聯值為字串,提供類型不符的詳細資料。
UnhandledBranchError 當一或多個分支或疊代遇到未處理的執行階段錯誤,且錯誤次數達到上限時,就會引發這個例外狀況。
ValueError 當作業或函式收到類型正確但值不正確的引數,且情況未由更精確的例外狀況 (例如 IndexError) 說明時,就會引發此例外狀況。
ZeroDivisionError 當除法或模數運算的第二個引數為零時,就會引發這個例外狀況。相關值是字串,表示運算元和運算的類型。

您也可以使用 raise 語法引發自訂錯誤。

後續步驟