存取工作流程執行結果

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

控制台

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

    前往「Workflows」頁面

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

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

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

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

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

  7. 如要篩選執行記錄,請使用表格頂端的「Filter」(篩選器) 欄位。舉例來說,如要只顯示執行失敗的嘗試,請在篩選條件的文字欄位中輸入 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 語法引發自訂錯誤

後續步驟