iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
AI 自動化

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

【Day 22】告別巨大工作流!解耦成4 大子流程

  • 分享至 

  • xImage
  •  

在 RPA 開發初期,為了驗證可行性,我們往往習慣將所有邏輯(讀設定檔、網頁爬蟲、資料處理、報表產出、推播通知)塞在同一支 Main.xaml 中。
這種「巨大工作流(Monolithic Workflow)」在專案規模擴大後會帶來致命問題:
維護災難:一個流程動輒五、六百行,找邏輯如同大海撈針。
缺乏複用性:其他專案若想用相同的推播模組或組態讀取器,無法獨立抽離。
版本控制衝突:團隊協作時只要修改同一個 XAML 檔,Git 合併就會發生無解衝突。
今天我們要將專利情報機器人進行「解耦重構」,拆分成 4 個獨立子模組,並透過 Main.xaml 進行頂層調度。

🏗️ 架構設計:4 大解耦模組
重構後的專案目錄結構如下:

RPA_Workflow/
├── Main.xaml                      # 頂層調度中心(Orchestrator)
├── config_rules.json              # 監控規則組態
├── processed_ids.txt              # 歷史水位線
└── Modules/
    ├── Init_LoadConfig.xaml       # 模組 1:組態讀取與水位線初始化
    ├── Scraping_ExtractPatents.xaml# 模組 2:瀏覽器爬蟲與多維加權打分
    ├── Reporting_GenerateHtmlCsv.xaml# 模組 3:歸檔目錄建立、CSV/HTML 產出
    └── Notifier_SendDiscord.xaml  # 模組 4:Discord Webhook 推播

模組職責與實作細節

  1. 模組一:組態與水位線初始化 (Init_LoadConfig.xaml)
    職責:專職負責檔案 I/O 與前置檢查。
    主要輸出引數:
    out_vipList (String[]):VIP 競品名單。
    out_foreignList (String[]):優先權關鍵詞。
    out_techList (String[]):核心技術關鍵詞。
    out_historyIds (List):歷史已處理之專利案號清單。
    out_isFirstRun (Boolean):是否為首次巡檢模式。

  2. 模組二:專利爬蟲與加權打分 (Scraping_ExtractPatents.xaml)
    職責:聚焦於 UI 自動化與業務邏輯。
    核心機制:
    增量比對煞車:遇歷史案號立刻 Break,節省檢索時間。
    UI 防抖重試(RetryScope):避免網路微卡頓導致元素找不到崩潰。
    加權打分分流:
    Tier 1 (≥4分):VIP 競品 + 核心技術等高風險專利。
    Tier 2 (2-3分):重點關注專利。
    Tier 3 (<2分):常規備查專利。

  3. 模組三:報表歸檔與視覺化儀表板 (Reporting_GenerateHtmlCsv.xaml)
    職責:數據持久化與報表生成。
    主要特點:
    自動按年月歸檔:路徑自動組裝為 Reports/yyyy/MM/。
    CSV 商業報表:提供原始數據以供 Excel 分析。
    Chart.js HTML 儀表板:生成包含甜甜圈圖(分佈佔比)、長條圖與即時搜尋欄位的視覺化報表。

  4. 模組四:Discord 推播通知 (Notifier_SendDiscord.xaml)
    職責:透過 Webhook 發送結構化 Embed 卡片通知。
    雙模式支援:
    正常巡檢戰報(in_isErrorAlert = False):推送綠色/橘色儀表板統計摘要。
    災難告警模式(in_isErrorAlert = True):捕捉到例外時,推送紅色警報與崩潰案號。


上一篇
【Day 21】專利網站瞬斷與超時的自動重試與例外防護
系列文
RPA流程自動化應用 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言