存取工作流程執行結果

執行工作流程後,您可以在 Google Cloud 控制台或使用 Google Cloud CLI 中存取工作流程執行結果。

控制台

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

    前往「Workflows」頁面

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

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

  4. 在「摘要」分頁中,每個執行作業都會顯示以下資訊:

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

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

  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 字典)。

工作流程執行期間擲回的錯誤會包含標記,協助您找出導致錯誤的原因。舉例來說,連接器傳回的錯誤可能會有兩個鍵 (tagsmessage),如下所示:

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

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

${'SystemError' in e.tags}

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

部分連接器和 HTTP API 會在傳回錯誤前,將錯誤序列化為字串。您可以使用標準程式庫函式,將酬載還原為原始錯誤。舉例來說,如要將錯誤字串轉換為對應,您可以使用 json.decodetext.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 語法產生自訂錯誤

後續步驟