iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
AI 自動化

RPA流程自動化應用系列 第 21 篇

【Day 21】專利網站瞬斷與超時的自動重試與例外防護

  • 分享至 

  • xImage
  •  

今天,我們要為加入斷線重連機制:導入 UiPath 原生 Retry Scope(自動重試) 與 全域 Try Catch 例外防護!

  • 一、 強韌性架構三大防禦層
    一個合格的企業級 RPA 流程不能一遇到錯誤就舉白旗,必須具備以下三個層級的防護:
    第一層:區域性自動自我修復(Auto Retry):
    當遭遇網頁讀取延遲、元素暫時未渲染完成時,機器人自動原處重試 3 次,每次間隔 3 秒。80% 以上的網路抖動都能在這一層被悄無聲息地化解。
    第二層:優雅降級與進度保全(Graceful Degradation):
    如果重試 3 次後目標網頁真的完全當機,流程絕不能直接閃退,而是先將當前已成功抓取的專利資料「強制存檔」,避免前功盡棄。
    第三層:全域災難告警(Failure Alerting):
    在拋出異常中斷前,機器人主動向維運團隊的 Discord 頻道發送 🚨「高優先級故障快訊」,並附帶具體的錯誤訊息與當前中斷步驟,讓工程師能秒級定位問題。

  • 二、 核心元件解析:UiPath 的 Retry Scope
    屬性設定:
    NumberOfRetries:3(最多重試 3 次)。
    RetryInterval:00:00:03(每次重試前等待 3 秒緩衝)。
    只要在 Action 內發生了 Selector 找不到或點擊超時,UiPath 會自動在背景等待 3 秒並重新執行該區塊,完全不需要額外寫複雜的迴圈邏輯!
    三、 為脆弱的爬蟲迴圈套上防護罩
    我們將其整併進 Try Catch 架構:

[Main Workflow]
└── Try
    └── 專利巡檢與爬蟲作業
        └── For Each Row (遍歷專利)
            └── Retry Scope (最多重試 3 次,間隔 3 秒)
                └── 點擊案號 ➔ 等待載入 ➔ 展開摘要 ➔ 萃取欄位
    └── Catch (System.Exception)
        ├── Log Message: "[嚴重錯誤] 爬蟲主程序異常中斷: " + exception.Message
        ├── 緊急儲存當前已取得的歷史資料
        └── 發送 Discord 災難告警 Payload

Discord 災難快訊 Payload 設計:
當進入 Catch 區塊時,機器人會立即發送鮮紅色的故障卡片,告知團隊當前狀態:

' 組裝故障通報 Payload
Dim alertObj = New Newtonsoft.Json.Linq.JObject(
    New Newtonsoft.Json.Linq.JProperty("content", "🚨 **【系統中斷告警】專利情報機器人執行異常!**"),
    New Newtonsoft.Json.Linq.JProperty("embeds", New Newtonsoft.Json.Linq.JArray(
        New Newtonsoft.Json.Linq.JObject(
            New Newtonsoft.Json.Linq.JProperty("title", "❌ 專利網站連線異常或元素定位超時"),
            New Newtonsoft.Json.Linq.JProperty("color", 16711680), ' 亮紅色
            New Newtonsoft.Json.Linq.JProperty("description", "機器人於巡檢過程遭遇無法修復之例外,已啟動緊急保全防護。"),
            New Newtonsoft.Json.Linq.JProperty("fields", New Newtonsoft.Json.Linq.JArray(
                New Newtonsoft.Json.Linq.JObject(
                    New Newtonsoft.Json.Linq.JProperty("name", "錯誤類型"),
                    New Newtonsoft.Json.Linq.JProperty("value", "`" & in_exType & "`"),
                    New Newtonsoft.Json.Linq.JProperty("inline", True)
                ),
                New Newtonsoft.Json.Linq.JObject(
                    New Newtonsoft.Json.Linq.JProperty("name", "中斷案號"),
                    New Newtonsoft.Json.Linq.JProperty("value", If(String.IsNullOrEmpty(in_caseId), "尚未開始", in_caseId)),
                    New Newtonsoft.Json.Linq.JProperty("inline", True)
                ),
                New Newtonsoft.Json.Linq.JObject(
                    New Newtonsoft.Json.Linq.JProperty("name", "詳細原因"),
                    New Newtonsoft.Json.Linq.JProperty("value", in_exMsg.Substring(0, Math.Min(in_exMsg.Length, 150)) & "..."),
                    New Newtonsoft.Json.Linq.JProperty("inline", False)
                )
            ))
        )
    ))
)

上一篇
【Day 20】拒絕一刀切!導入「多維度加權風險評分(Tier 1~3)」升級專利雷達規則
系列文
RPA流程自動化應用 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言