🐬Spotfire Automation Services 排程怎麼確認真的有跑?從 Scheduled Jobs 到 Script 流程一次看懂(新手也能懂)
前言:為什麼「排程顯示 Completed」不代表你想要的流程都成功?
很多人第一次使用 Spotfire Automation Services,會以為:
Scheduled jobs 顯示 COMPLETED
就代表「資料有更新、腳本有跑、PDF 有輸出」✅
但實務上常遇到的狀況是:
- 排程顯示 COMPLETED,但匯出的檔案是舊資料
- 手動跑 OK,自動排程卻失敗
- 明明設定了 Script,卻不知道它到底有沒有被執行
- 看得到 Job name,但找不到「到底跑了哪些步驟」
這篇文章會用「完全沒接觸過的人也能懂」的方式,帶你把整個執行流程拆開來看。
一句話先懂:Scheduled Jobs 只是「外殼」,真正流程在 Library
Spotfire Automation Services 的概念可以用一句話理解:
- Scheduled Jobs:排程表(像 Windows 工作排程器的清單)
- Library 裡的 Job 定義:真正的流程腳本(像 .bat / pipeline / workflow)
所以你在 Scheduled Jobs 看到的資訊,通常只有:
- Job 名稱
-
Job path(例如
/DEV/FT Auto) - 最後狀態(Completed / Failed)
- 下次執行時間
但你想看的這些,不會出現在 Scheduled Jobs:
-
用哪個
.dxp - 跑了哪些 Script
- Script 做了哪些事(刷新資料、換頁、匯出、存檔)
- 匯出 PDF / Excel 到哪裡
1)如何找到「真正的執行流程」:跟著 Job path 走
你會在 Scheduled Jobs 看到一個 Job path,例如:
-
/DEV/CP Auto -
/DEV/FT Auto
這個 path 就像「資料夾路徑」,代表真正的 Job 定義放在哪。
正確操作
- 進到 Automation Services → Library
-
展開
/DEV -
點進去找到
CP Auto或FT Auto - 打開 Job 定義(Workflow)
打開後你才會看到它真正在做什麼。
2)打開 Job 定義後,先看懂 5 個關鍵步驟(超重要)
Automation Job 通常由很多「任務(Tasks)」組成,你可以把它想像成:
一條流水線:開檔 → 刷新資料 → 跑腳本 → 匯出 → 存檔 → 關閉
新手只要先掌握這 5 類,就能快速定位問題。
(1)Open Analysis:它到底開哪個報表?
這一步會指定要打開哪個 Spotfire 分析檔(.dxp)。
你要確認:
- 是不是正確的檔案
- 路徑是否可被伺服器存取
- 是否使用「儲存版本」或「特定版本」
(2)Data Refresh / Reload:它有沒有真的更新資料?
很多「排程看起來成功,但結果是舊的」就是因為:
- 沒有做 Refresh / Reload
- 或資料庫連線在伺服器環境下權限不足
- 或刷新只刷新某些表
你要找的關鍵字通常是:
- Refresh data tables
- Reload data
- Update from source
(3)Execute Script:你要找的 Script 都在這裡
如果你要確認「腳本是否有跑」,就看 Execute Script / Script Task。
通常會顯示:
- Script 名稱(或 Inline Script)
- Script 類型(常見 IronPython)
- 參數設定(有些會吃 Document Properties)
下面是一個「安全版」示意 Script:
用途:在排程環境中寫 log、更新 document property、並印出目前時間。
# Demo Script (Sanitized Example)
from datetime import datetime
def write_log(msg):
# 這裡只示意:實務上可寫到共享資料夾或伺服器 log
print("[AUTO] " + msg)
write_log("Job started")
write_log("Current time: " + datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# 假設要更新某個參數(示意用)
# Document.Properties["RUN_FLAG"] = "Y"
write_log("Job finished")
✅ 這種 Script 在排程環境通常能跑
⚠️ 但如果 Script 依賴「UI 操作」,排程就很容易失敗(下一節會講)
(4)Export:報表匯出(PDF/Excel)設定在哪?
很多人卡在「為什麼沒產生檔案」
原因通常就在 Export Task。
你要確認:
- 匯出格式:PDF / Excel
- 匯出路徑:是否是伺服器可寫入的路徑
- 檔名是否覆蓋、是否有日期參數
- 權限:服務帳號是否有寫入權限
可靠的匯出路徑建議
✅
\\FileServer\Share\ReportOutput\...
✅
D:\SpotfireOutput\...(在同一台
server 且權限正確)
❌
C:\Users\你的帳號\Desktop\...(排程常常根本沒有這個桌面環境)
(5)Save / Close:為什麼有時候會「下次跑更亂」?
有些流程會在最後:
- Save analysis(會覆蓋原 DXP)
- Close analysis(結束)
如果你「只想匯出報表」,不想改動原報表狀態
就要特別注意 Save 的設定,避免把當次狀態寫回去。
3)為什麼「手動可以、排程不行」?最常見的原因是 UI 相依
排程環境沒有你在桌面版看到的 UI。
所以以下這類操作常常會炸:
- 依賴「目前在哪一頁」
- 依賴「使用者點選某個篩選器」
- 依賴「標記(Marking)」或某個視覺元件的互動
典型危險示意
# ⚠️ 示意:排程環境可能沒有你以為的 ActivePage
active_page_title = Application.Document.ActivePageReference.Title
print("Active page:", active_page_title)
✅ 改法:在 Script 裡不要假設 UI 狀態
應改成用「固定名稱」或「Document Properties」驅動流程。
4)要去哪裡看「排程到底做了什麼」?這兩個地方最關鍵
(A)Automation Services → Monitor → Job Activity
你可以看到:
- 每次執行的時間
- 失敗的錯誤訊息(通常最有用)
- 執行耗時
(B)在 Script 裡加上「可追蹤 log」
最簡單的方法:在 Script 內印出時間與關鍵節點訊息
並讓 log 被保存(例如輸出到共享資料夾或系統 log)。
結語:快速檢查 Spotfire 排程流程的「新手 SOP」
如果你只想快速掌握,照這套做就對了:
- 在 Scheduled Jobs 先看 Job path
- 去 Library 用 path 找到 Job 定義
-
在 Job 定義裡按順序確認:
- Open Analysis
- Refresh/Reload
- Execute Script
- Export
- Save/Close
- 出問題就去 Monitor → Job Activity 看 log
- Script 內加入可追蹤 log,避免「跑了但不知道跑到哪」
常見 FAQ
Q1:為什麼 Completed 但沒看到輸出檔?
通常是 Export path 權限、路徑不存在、或寫到本機使用者桌面造成的。
Q2:我能看到 Script 名稱,但看不到 Script 內容?
有可能 Script 是存在 .dxp 裡的
Script Manager,Automation 只引用名稱。
要回到 Spotfire Analyst(桌面版)看 Script Manager。
Q3:怎麼確認 Script 一定有被執行?
最保險:在 Script 裡寫 log(印時間/寫檔/寫資料庫一筆 log),就能精準確認。
留言
張貼留言