跳轉到

程式資訊

  • 程式 IDAUTOPILOTMETHOD
  • 所屬子系統: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(例如 CloseBookFxRateLogSysExec)不一致,排程到期時會找不到對應 task 而不執行。新增程式端方法屬於開發作業,本表單僅維護其登錄資料。

操作步驟

本表單為標準的單表主檔維護畫面,只有一個編輯區(無明細、無頁籤)。

新增一筆方法

  1. 從主選單開啟 A.系統資料 → 自動執行方法。
  2. 點工具列 新增
  3. 方法名稱(MethodName) 輸入程式端對應 task 的識別名稱。此欄為主鍵,不會自動轉大寫NeedUpper=False),請與程式端 Name 大小寫完全一致。
  4. 參數(Parameters) 填寫此方法接受的參數定義字串(供維護人員辨識,非執行時的實際值)。
  5. 預設參數(DefaultParameters) 填寫排程設定時要帶出的預設參數骨架。
  6. 說明(Description) 輸入這個方法做什麼的文字描述(多行可換行)。
  7. 儲存

修改/刪除

  1. 在資料列表選取要處理的方法。
  2. 修改:直接在右側編輯區改 參數/預設參數/說明儲存。主鍵 方法名稱 不建議在已被排程引用後變更(會使既有排程對不上)。
  3. 刪除:選取後點 刪除

刪除前先確認沒有排程在用

若某方法已被排程模板引用,刪除登錄資料不會自動清掉那些排程;排程到期時會因找不到方法而無法執行。刪除前請先確認沒有排程指向它。

查詢

工具列的查詢/瀏覽功能可依方法名稱定位資料列。資料筆數通常不多(等於系統提供的自動化方法數量),多以捲動瀏覽為主。

欄位說明

欄位 必填 說明/格式/預設
方法名稱(MethodName) 主鍵,長度上限 50。排程引擎反查程式 task 用的識別名稱,不自動轉大寫,須與程式端 IAutoPilotTask.Name 完全一致(例 CloseBookFxRateLogSysExec)。新增時預設空字串。
參數(Parameters) 長度上限 200。方法的參數定義字串,供維護辨識。預設空字串。
預設參數(DefaultParameters) 長度上限 200。排程設定時帶出的預設參數骨架。預設空字串。
說明(Description) 多行文字(後端欄位為「訊息資料」,長度上限 300)。方法用途說明。預設空字串。

資料表審核欄位

後端 view 還帶有建檔日期、輸入人員、輸入地點等系統審核欄位,由系統於存檔時自動寫入,畫面上不顯示,無需手動維護。

欄位連動與附加功能

本表單刻意設計得很單純——只是一份名稱字典,畫面上沒有自訂的欄位連動、重算或擴充按鈕。真正的「行為」發生在程式端與排程端,理解這條才看得懂這張表單為何存在:

  • 方法名稱即程式入口(最關鍵的連動,但發生在執行階段):當排程引擎處理到期事件時,會拿事件記錄的「單據別+執行方法」去 AutoPilotRegistry.GetTask 反查 IAutoPilotTask——先用 task 的 ProgramClass 縮小範圍,再比對 task 的 Name。因此你在 方法名稱 填的字,等於是在指定「排程到期時要跑哪段程式」。填錯字不會在這張表單報錯,但排程會靜默地找不到方法。

  • 目前程式端已啟用的方法:依 AutoPilotRegistry 註冊,現階段實際可被排程執行的內建方法有三個——

    1. CloseBook(自動關帳,對應總帳關帳邏輯,見 關帳作業)。
    2. FxRate(自動抓取/更新匯率)。
    3. LogSysExec(通用 procedure 執行器:透過參數指定要呼叫的 DataEvent/Procedure 與 LP_P1~LP_P12,不必為單純呼叫一支 procedure 而新建專屬程式)。

    其餘如 BalanceReportPaymntpqQueryFromGtrapplyGetPivotGetWordMailMerge 等對應的 task 類別在程式碼中已存在,但目前於 AutoPilotRegistry 以註解停用,尚未啟用排程執行。

  • 預設參數的用途預設參數 欄位提供排程模板帶出參數骨架用。程式端的 task 會在自己的 DefaultParameter 定義一份 JSON 骨架,可含日期 placeholder {d}(當天,依事件預定時間)、{-d1}(上個月最後一天),以及執行事件序號 placeholder {eventpkid};排程到期時由引擎(SchedulePlaceholders)把這些 placeholder 換成實際日期或本次執行的 eventpkid。本表單的 預設參數 文字僅作為維護人員的對照與說明,實際展開以程式端 task 的 DefaultParameter 為準。

  • 顯示名稱多語系:排程下拉選單顯示的中文方法名,是用 AUTOPILOTMETHOD 這個程式代號 + 方法名稱,去多語系字典查翻譯(DisplayNameService)。也就是說,本表單的「方法名稱」是英文識別字,要讓使用者在排程畫面看到中文,需到 多語系維護 補上 AUTOPILOTMETHOD.<方法名稱> 的對應翻譯。

為何沒有列印/轉拋等動作

本表單是純設定字典,不涉及單據流程,因此沒有列印報表、簽核、轉傳票、匯入匯出等動作。需要那些功能的是實際的業務單據表單,不是這份方法登錄檔。

新增方法本身是開發作業

要「多一個可排程的方法」,除了在這裡登錄一筆,更核心的是在程式端新增對應的 IAutoPilotTask 並註冊到 AutoPilotRegistry(屬開發作業)。單純在本表單新增一筆名稱、程式端卻沒有對應 task,排程時仍找不到方法。

常見問題

在排程設定的下拉選單看不到我新增的方法?

排程畫面的方法選單會比對「程式端已註冊的 task」與多語系翻譯。請確認:(1) 程式端確實有對應 NameIAutoPilotTask 並已在 AutoPilotRegistry 註冊(未停用);(2) 本表單的 方法名稱 與該 Name 大小寫一致;(3) 若顯示為英文 id,需到 多語系維護AUTOPILOTMETHOD.<方法名稱> 的中文翻譯。

排程到時間了卻沒有執行?

最常見原因是方法名稱對不上程式。排程引擎用事件記錄的「單據別+執行方法」反查 AutoPilotRegistry,比對 task 的 ProgramClassName;名稱不一致(含大小寫、前後空白)會找不到方法而靜默略過。請核對本表單 方法名稱 與程式端 Name 完全相同。

方法名稱可以改大小寫嗎?存檔後位置或內容跑掉?

方法名稱 是主鍵且不會自動轉大寫,請以程式端 Name 為準逐字輸入。已被排程引用後不建議再改名,否則既有排程會對不上、無法執行;若必須改名,請同步更新所有引用該方法的排程設定。

我刪掉了一個方法,但排程還是嘗試去跑它?

刪除本表單的登錄資料不會連動清除已建立的排程。排程仍會帶著原方法名稱到期,但因字典與程式端都查不到而無法執行。請到排程設定移除或改指其他方法。

預設參數要怎麼填?填了會自動代入嗎?

本表單的 預設參數 是給維護人員對照用的文字。實際排程展開參數時,是以程式端 task 的 DefaultParameter(JSON 骨架,含 {d}{-d1}{eventpkid} 等 placeholder)為準,由排程引擎在執行當下替換。兩者建議保持一致以免混淆。

相關功能


需補截圖清單

以下截圖待補拍(放 docs/A-System/images/):

  1. autopilotmethod-step1.png — 自動執行方法主畫面(含方法名稱/參數/預設參數/說明四欄編輯區)
  2. autopilotmethod-step2.png — 工具列新增後輸入一筆方法的狀態
  3. autopilotmethod-step3.png — 排程設定畫面引用此處方法的下拉選單(佐證對應關係)