任務(wù)機(jī)制分為兩個類型,一是計(jì)劃任務(wù),二是啟動時任務(wù)。
計(jì)劃任務(wù)
是系統(tǒng)中實(shí)現(xiàn)按時間計(jì)劃執(zhí)行某項(xiàng)任務(wù)的功能。
應(yīng)用場景:
固定某個時間執(zhí)行的任務(wù)。
每日執(zhí)行的任務(wù)。
主要對象:
Nop.Core.Domain.Tasks
ScheduleTask 計(jì)劃任務(wù)實(shí)體,定義實(shí)體包含的屬性。
Nop.Services.Tasks
IScheduleTaskService 系統(tǒng)實(shí)體業(yè)務(wù)操作,提供對計(jì)劃任務(wù)的數(shù)據(jù)的增、刪、改、查。
Itask 任務(wù)接口,定義計(jì)劃執(zhí)行的任務(wù)的所需要的方法。
Task 是ScheduleTask的執(zhí)行時實(shí)體,主要用于運(yùn)行時創(chuàng)建任務(wù)和執(zhí)行任務(wù)。
TaskThread 任務(wù)線程,主要通過Timer來執(zhí)行線程。
TaskManager 任務(wù)管理者,用于系統(tǒng)運(yùn)行時,任務(wù)功能的管理(初始化、啟動、停用)
現(xiàn)有用例
日志清理計(jì)劃任務(wù)(ClearLogTask)。
緩存清理計(jì)劃任務(wù)(ClearCacheTask)。
消息傳送任務(wù)。
業(yè)務(wù)流程
編碼階段
添加計(jì)劃任務(wù)數(shù)據(jù)(ScheduleTask),設(shè)定計(jì)劃任務(wù)執(zhí)行時間和時間間隔。
實(shí)現(xiàn)ITask接口,并在接口的Excute方法中實(shí)現(xiàn)任務(wù)操作。
執(zhí)行階段
系統(tǒng)啟動時,同時啟動TaskManager。
TaskManager獲取所有計(jì)劃任務(wù),并按時間間隔別到不同的TaskThread中。
TaskManager執(zhí)行所有的TaskThread的計(jì)時執(zhí)行器。
TaskThread計(jì)時執(zhí)行器時間到時執(zhí)行計(jì)劃任務(wù)。
任務(wù)執(zhí)行完成后重啟計(jì)時執(zhí)行器繼續(xù)上續(xù)操作,如果是一次性任務(wù),則完成。
啟動時任務(wù)
用于系統(tǒng)啟動時同時啟動的任務(wù)。
應(yīng)用場景
數(shù)據(jù)連接任務(wù),用于啟動時判斷數(shù)據(jù)庫連接是否可用。
數(shù)據(jù)映射任務(wù)
主要對象:
Nop.Core.Infrastructure
IStartupTask 啟動時任務(wù)規(guī)范接口,定義了執(zhí)行入口和執(zhí)行優(yōu)先級。
現(xiàn)有用例
EfStartUpTask 用于數(shù)據(jù)庫初始化工作。
AutoMapperStartupTask 用于數(shù)據(jù)映身工作。
業(yè)務(wù)流程
當(dāng)系統(tǒng)啟動時,在Nop引擎(NopEngine.RunStartupTasks)初始化時會獲取得所有啟動時任務(wù),并執(zhí)行。
聯(lián)系客服