Task模組

MaaFramework Tasker 接口說明

Tasker 類負責管理任務(Task)的創建、狀態查詢、等待與資源綁定等操作,是 MaaFramework 中任務調度的核心模組。通過 Tasker,使用者可以提交新的任務、停止當前任務、查詢任務狀態以及設置全局選項(如日誌路徑、截圖保存等)。


1. Tasker 的初始化與銷毀

__init__(notification_handler=None, handle=None)

用途:
初始化 Tasker 實例。

  • 若傳入現有的 handle,則 Tasker 為非擁有者(_own=False),不負責銷毀該 handle。
  • 若未傳入 handle,則 Tasker 會調用底層函數 MaaTaskerCreate 並傳入通知處理器參數(通過 NotificationHandler._gen_c_param 生成),同時標記自己為擁有者。

參數說明:

  • notification_handler (NotificationHandler, 可選):用於處理框架內部各種通知。
  • handle (MaaTaskerHandle, 可選):若已有底層 handle,則直接使用,否則 Tasker 自行創建。

異常處理:

  • 若創建 handle 失敗,則拋出 RuntimeError。

__del__()

用途:
在 Tasker 實例被銷毀時,如果 Tasker 是擁有者(_own 為 True),則調用 MaaTaskerDestroy 釋放底層資源。


2. 綁定資源與控制器

bind(resource, controller) -> bool

用途:
將資源(Resource)和控制器(Controller)與 Tasker 進行綁定,以便後續任務執行時可以使用這些對象。

參數說明:

  • resource (Resource):待綁定的資源對象,通常包含待測試項目或設備信息。
  • controller (Controller):待綁定的控制器對象,用於模擬操作或截屏操作。

返回值:

  • 返回布林值,若同時成功綁定資源和控制器則返回 True

注意:

  • 為避免垃圾回收,綁定後會將 resource 和 controller 分別保存在 _resource_holder_controller_holder 中。

3. 任務與狀態查詢

屬性 resourcecontroller

用途:

  • resource:返回 Tasker 當前綁定的 Resource 實例。
  • controller:返回 Tasker 當前綁定的 Controller 實例。

異常處理:

  • 如果未能成功獲取對應的 handle,則拋出 RuntimeError。

屬性 initedrunning

用途:

  • inited:檢查 Tasker 是否已初始化。
  • running:檢查是否有任務正在運行。

這兩個屬性均通過調用底層函數 MaaTaskerInited 與 MaaTaskerRunning 返回相應狀態(布林值)。

post_task(entry, pipeline_override={}) -> JobWithResult

用途:
提交一個新任務。

  • entry 參數指定了任務的入口腳本或配置。
  • pipeline_override 為可選的管線配置覆蓋,用於調整任務執行過程中的某些參數或流程。

返回值:

  • 返回一個 JobWithResult 實例,用於後續等待任務完成、查詢任務狀態或獲取結果。

post_stop() -> Job

用途:
提交一個停止命令,用於中止當前任務。
返回值:

  • 返回一個 Job 實例,使用者可通過該對象等待停止操作完成。

get_latest_node(name) -> Optional[NodeDetail]

用途:
查詢最新的節點信息(NodeDetail),通常用於獲取最新一次任務執行過程中某個節點的詳細狀態或結果。

參數說明:

  • name (str):指定節點名稱。

返回值:

  • 若找到對應節點,則返回 NodeDetail;否則返回 None。

clear_cache() -> bool

用途:
清理 Tasker 的內部緩存(例如任務狀態緩存等)。

返回值:

  • 成功則返回 True,否則返回 False

4. 全局配置設置(靜態方法)

Tasker 提供了多個靜態方法,用於設定全局選項,這些選項會影響 MaaFramework 的運行行為。

set_log_dir(path) -> bool

用途:
設置全局日誌目錄。
參數說明:

  • path (str 或 Path):日誌存放目錄路徑。
    返回值:
  • 成功設置返回 True

set_save_draw(save_draw) -> bool

用途:
設置是否保存繪製結果(如截圖中標記的區域等)。
參數說明:

  • save_draw (bool):是否保存繪製,True 表示保存。
    返回值:
  • 成功返回 True

set_recording(recording) -> bool

用途:
設置是否記錄所有截圖及操作流程(錄製模式)。
參數說明:

  • recording (bool):True 表示啟用錄製。
    返回值:
  • 成功返回 True

set_stdout_level(level) -> bool

用途:
設定輸出到標準輸出(stdout)的日誌級別。
參數說明:

  • level (LoggingLevelEnum):指定的日誌級別。
    返回值:
  • 成功返回 True

`set_show_hit_draw(show_hit_draw) ->