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