程式資訊
- 程式 ID:
AUTOPILOTMETHOD - 所屬子系統:A.系統資料
- 狀態:stable
自動執行方法¶
功能簡介¶
「自動執行方法」是 AutoPilot 自動排程引擎可呼叫之方法(method)的登錄主檔。系統的排程器每隔一段時間掃描到期的排程事件,依事件指定的執行方法名稱反查到對應的程式邏輯後執行——例如自動關帳、自動抓匯率、自動跑某個 procedure。本表單就是維護「有哪些方法可以被排程挑選」的字典。
這是一支系統設定/IT 維護層級的主檔,通常由系統管理員或導入顧問維護,一般操作人員只是在排程設定畫面的下拉選單中「選用」這裡登錄好的方法,不會直接進來改。
與排程設定的關係
本表單只負責「登錄方法的名稱、參數定義與說明」這份字典。實際把某個方法掛到時間軸上排程,是在排程模板(EVENTPROJECT/EVENTITEM)設定的;該畫面的執行方法下拉選單會去比對這裡登錄的資料。
前置需求¶
- 權限:A.系統資料 →
自動執行方法(AUTOPILOTMETHOD)的新增/修改/刪除/瀏覽權限。權限維護見 操作權限設定。 - 對應的程式端方法:本表單只是「名稱字典」,要真正能被排程執行,方法名稱必須對得上系統程式裡已實作並啟用的 AutoPilot 方法。
| 資料/設定 | 影響什麼 |
|---|---|
| 系統程式已啟用的 AutoPilot 方法(方法名稱) | 這裡登錄的 MethodName 要與程式端方法名稱一致,排程才反查得到並執行 |
| 排程模板(EVENTPROJECT) | 排程畫面從這份清單挑選方法,並依 DefaultParameters 帶出預設參數骨架 |
多語系字典(AUTOPILOTMETHOD.<MethodName>) |
排程下拉選單顯示的中文方法名稱,見 多語系維護 |
名稱必須與程式一致
MethodName 不是隨意填的標籤,而是排程引擎反查程式邏輯用的「鍵」。若名稱與程式端方法名稱(例如 CloseBook、FxRate、LogSysExec)不一致,排程到期時會找不到對應方法而不執行。新增程式端方法屬於開發作業,本表單僅維護其登錄資料。
操作步驟¶
本表單為標準的單表主檔維護畫面,只有一個編輯區(無明細、無頁籤)。
新增一筆方法¶
- 從主選單開啟 A.系統資料 → 自動執行方法。
- 點工具列
新增。 - 在 方法名稱(MethodName) 輸入程式端對應方法的識別名稱。此欄為主鍵,不會自動轉大寫,請與程式端方法名稱大小寫完全一致。
- 在 參數(Parameters) 填寫此方法接受的參數定義字串(供維護人員辨識,非執行時的實際值)。
- 在 預設參數(DefaultParameters) 填寫排程設定時要帶出的預設參數骨架。
- 在 說明(Description) 輸入這個方法做什麼的文字描述(多行可換行)。
- 點
儲存。
修改/刪除¶
- 在資料列表選取要處理的方法。
- 修改:直接在右側編輯區改 參數/預設參數/說明 後
儲存。主鍵 方法名稱 不建議在已被排程引用後變更(會使既有排程對不上)。 - 刪除:選取後點
刪除。
刪除前先確認沒有排程在用
若某方法已被排程模板引用,刪除登錄資料不會自動清掉那些排程;排程到期時會因找不到方法而無法執行。刪除前請先確認沒有排程指向它。
查詢¶
工具列的查詢/瀏覽功能可依方法名稱定位資料列。資料筆數通常不多(等於系統提供的自動化方法數量),多以捲動瀏覽為主。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 方法名稱(MethodName) | ✔ | 主鍵,長度上限 50。排程引擎反查程式端方法用的識別名稱,不自動轉大寫,須與程式端方法名稱完全一致(例 CloseBook、FxRate、LogSysExec)。新增時預設空字串。 |
| 參數(Parameters) | — | 長度上限 200。方法的參數定義字串,供維護辨識。預設空字串。 |
| 預設參數(DefaultParameters) | — | 長度上限 200。排程設定時帶出的預設參數骨架。預設空字串。 |
| 說明(Description) | — | 多行文字(後端欄位為「訊息資料」,長度上限 300)。方法用途說明。預設空字串。 |
資料表審核欄位
後端 view 還帶有建檔日期、輸入人員、輸入地點等系統審核欄位,由系統於存檔時自動寫入,畫面上不顯示,無需手動維護。
欄位連動與附加功能¶
本表單刻意設計得很單純——只是一份名稱字典,畫面上沒有自訂的欄位連動、重算或擴充按鈕。真正的「行為」發生在程式端與排程端,理解這條才看得懂這張表單為何存在:
-
方法名稱即程式入口(最關鍵的連動,但發生在執行階段):當排程引擎處理到期事件時,會拿事件記錄的「單據別+執行方法」去反查程式端已啟用的方法——先用單據別縮小範圍,再比對方法名稱。因此你在 方法名稱 填的字,等於是在指定「排程到期時要跑哪段程式」。填錯字不會在這張表單報錯,但排程會靜默地找不到方法。
-
目前程式端已啟用的方法:現階段實際可被排程執行的內建方法有三個——
CloseBook(自動關帳,對應總帳關帳邏輯,見 關帳作業)。FxRate(自動抓取/更新匯率)。LogSysExec(通用 procedure 執行器:透過參數指定要呼叫的 DataEvent/Procedure 與LP_P1~LP_P12,不必為單純呼叫一支 procedure 而新建專屬程式)。
其餘如
BalanceReport、PaymntpqQuery、FromGtrapply、GetPivot、GetWordMailMerge等方法在程式中已存在,但目前停用,尚未啟用排程執行。 -
預設參數的用途:預設參數 欄位提供排程模板帶出參數骨架用。程式端的每個方法會自帶一份預設參數 JSON 骨架,可含日期 placeholder
{d}(當天,依事件預定時間)、{-d1}(上個月最後一天),以及執行事件序號 placeholder{eventpkid};排程到期時由排程引擎把這些 placeholder 換成實際日期或本次執行的 eventpkid。本表單的 預設參數 文字僅作為維護人員的對照與說明,實際展開以程式端方法自帶的預設參數為準。 -
顯示名稱多語系:排程下拉選單顯示的中文方法名,是用
AUTOPILOTMETHOD這個程式代號 + 方法名稱,去多語系字典查翻譯。也就是說,本表單的「方法名稱」是英文識別字,要讓使用者在排程畫面看到中文,需到 多語系維護 補上AUTOPILOTMETHOD.<方法名稱>的對應翻譯。
為何沒有列印/轉拋等動作
本表單是純設定字典,不涉及單據流程,因此沒有列印報表、簽核、轉傳票、匯入匯出等動作。需要那些功能的是實際的業務單據表單,不是這份方法登錄檔。
新增方法本身是開發作業
要「多一個可排程的方法」,除了在這裡登錄一筆,更核心的是在程式端新增並啟用對應的方法(屬開發作業)。單純在本表單新增一筆名稱、程式端卻沒有對應方法,排程時仍找不到方法。
常見問題¶
在排程設定的下拉選單看不到我新增的方法?
排程畫面的方法選單會比對「程式端已啟用的方法」與多語系翻譯。請確認:(1) 程式端確實有同名方法且已啟用(未停用);(2) 本表單的 方法名稱 與程式端方法名稱大小寫一致;(3) 若顯示為英文 id,需到 多語系維護 補 AUTOPILOTMETHOD.<方法名稱> 的中文翻譯。
排程到時間了卻沒有執行?
最常見原因是方法名稱對不上程式。排程引擎用事件記錄的「單據別+執行方法」反查程式端已啟用的方法,比對單據別與方法名稱;名稱不一致(含大小寫、前後空白)會找不到方法而靜默略過。請核對本表單 方法名稱 與程式端方法名稱完全相同。
方法名稱可以改大小寫嗎?存檔後位置或內容跑掉?
方法名稱 是主鍵且不會自動轉大寫,請以程式端方法名稱為準逐字輸入。已被排程引用後不建議再改名,否則既有排程會對不上、無法執行;若必須改名,請同步更新所有引用該方法的排程設定。
我刪掉了一個方法,但排程還是嘗試去跑它?
刪除本表單的登錄資料不會連動清除已建立的排程。排程仍會帶著原方法名稱到期,但因字典與程式端都查不到而無法執行。請到排程設定移除或改指其他方法。
預設參數要怎麼填?填了會自動代入嗎?
本表單的 預設參數 是給維護人員對照用的文字。實際排程展開參數時,是以程式端方法自帶的預設參數(JSON 骨架,含 {d}/{-d1}/{eventpkid} 等 placeholder)為準,由排程引擎在執行當下替換。兩者建議保持一致以免混淆。
相關功能¶
需補截圖清單
以下截圖待補拍(放 docs/A-System/images/):
autopilotmethod-step1.png— 自動執行方法主畫面(含方法名稱/參數/預設參數/說明四欄編輯區)autopilotmethod-step2.png— 工具列新增後輸入一筆方法的狀態autopilotmethod-step3.png— 排程設定畫面引用此處方法的下拉選單(佐證對應關係)