issue_50 #57
@@ -84,7 +84,7 @@ func (app *Application) Start() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. 启动后台工作协程
|
// 3. 启动后台工作协程
|
||||||
app.Domain.PlanExecutionManager.Start()
|
app.Domain.planService.Start()
|
||||||
|
|
||||||
// 4. 启动 API 服务器
|
// 4. 启动 API 服务器
|
||||||
app.API.Start()
|
app.API.Start()
|
||||||
@@ -106,7 +106,7 @@ func (app *Application) Stop() error {
|
|||||||
app.API.Stop()
|
app.API.Stop()
|
||||||
|
|
||||||
// 关闭任务执行器
|
// 关闭任务执行器
|
||||||
app.Domain.PlanExecutionManager.Stop()
|
app.Domain.planService.Stop()
|
||||||
|
|
||||||
// 断开数据库连接
|
// 断开数据库连接
|
||||||
if err := app.Infra.Storage.Disconnect(); err != nil {
|
if err := app.Infra.Storage.Disconnect(); err != nil {
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ type DomainServices struct {
|
|||||||
taskFactory plan.TaskFactory
|
taskFactory plan.TaskFactory
|
||||||
PlanExecutionManager plan.ExecutionManager
|
PlanExecutionManager plan.ExecutionManager
|
||||||
AnalysisPlanTaskManager plan.AnalysisPlanTaskManager
|
AnalysisPlanTaskManager plan.AnalysisPlanTaskManager
|
||||||
|
planService plan.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
// initDomainServices 初始化所有的领域服务。
|
// initDomainServices 初始化所有的领域服务。
|
||||||
@@ -147,12 +148,12 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
|
|||||||
infra.Lora.Comm,
|
infra.Lora.Comm,
|
||||||
)
|
)
|
||||||
|
|
||||||
// 计划任务管理器
|
|
||||||
analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.Repos.PlanRepo, infra.Repos.PendingTaskRepo, infra.Repos.ExecutionLogRepo, logger)
|
|
||||||
|
|
||||||
// 任务工厂
|
// 任务工厂
|
||||||
taskFactory := task.NewTaskFactory(logger, infra.Repos.SensorDataRepo, infra.Repos.DeviceRepo, generalDeviceService)
|
taskFactory := task.NewTaskFactory(logger, infra.Repos.SensorDataRepo, infra.Repos.DeviceRepo, generalDeviceService)
|
||||||
|
|
||||||
|
// 计划任务管理器
|
||||||
|
analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.Repos.PlanRepo, infra.Repos.PendingTaskRepo, infra.Repos.ExecutionLogRepo, logger)
|
||||||
|
|
||||||
// 任务执行器
|
// 任务执行器
|
||||||
planExecutionManager := plan.NewPlanExecutionManager(
|
planExecutionManager := plan.NewPlanExecutionManager(
|
||||||
infra.Repos.PendingTaskRepo,
|
infra.Repos.PendingTaskRepo,
|
||||||
@@ -168,6 +169,9 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
|
|||||||
cfg.Task.NumWorkers,
|
cfg.Task.NumWorkers,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 计划管理器
|
||||||
|
planService := plan.NewPlanService(planExecutionManager, analysisPlanTaskManager, logger)
|
||||||
|
|
||||||
return &DomainServices{
|
return &DomainServices{
|
||||||
PigPenTransferManager: pigPenTransferManager,
|
PigPenTransferManager: pigPenTransferManager,
|
||||||
PigTradeManager: pigTradeManager,
|
PigTradeManager: pigTradeManager,
|
||||||
@@ -177,6 +181,7 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
|
|||||||
AnalysisPlanTaskManager: analysisPlanTaskManager,
|
AnalysisPlanTaskManager: analysisPlanTaskManager,
|
||||||
taskFactory: taskFactory,
|
taskFactory: taskFactory,
|
||||||
PlanExecutionManager: planExecutionManager,
|
PlanExecutionManager: planExecutionManager,
|
||||||
|
planService: planService,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ func (app *Application) initializePendingTasks() error {
|
|||||||
planRepo := app.Infra.Repos.PlanRepo
|
planRepo := app.Infra.Repos.PlanRepo
|
||||||
pendingTaskRepo := app.Infra.Repos.PendingTaskRepo
|
pendingTaskRepo := app.Infra.Repos.PendingTaskRepo
|
||||||
executionLogRepo := app.Infra.Repos.ExecutionLogRepo
|
executionLogRepo := app.Infra.Repos.ExecutionLogRepo
|
||||||
analysisPlanTaskManager := app.Domain.AnalysisPlanTaskManager
|
planService := app.Domain.planService
|
||||||
|
|
||||||
logger.Info("开始初始化待执行任务列表...")
|
logger.Info("开始初始化待执行任务列表...")
|
||||||
|
|
||||||
@@ -235,7 +235,7 @@ func (app *Application) initializePendingTasks() error {
|
|||||||
|
|
||||||
// 阶段三:初始刷新
|
// 阶段三:初始刷新
|
||||||
logger.Info("阶段三:开始刷新待执行列表...")
|
logger.Info("阶段三:开始刷新待执行列表...")
|
||||||
if err := analysisPlanTaskManager.Refresh(); err != nil {
|
if err := planService.RefreshPlanTriggers(); err != nil {
|
||||||
return fmt.Errorf("刷新待执行任务列表失败: %w", err)
|
return fmt.Errorf("刷新待执行任务列表失败: %w", err)
|
||||||
}
|
}
|
||||||
logger.Info("阶段三:待执行任务列表初始化完成。")
|
logger.Info("阶段三:待执行任务列表初始化完成。")
|
||||||
|
|||||||
@@ -12,12 +12,6 @@ type Service interface {
|
|||||||
Stop()
|
Stop()
|
||||||
// RefreshPlanTriggers 刷新计划触发器,同步数据库中的计划状态和待执行队列中的触发器任务。
|
// RefreshPlanTriggers 刷新计划触发器,同步数据库中的计划状态和待执行队列中的触发器任务。
|
||||||
RefreshPlanTriggers() error
|
RefreshPlanTriggers() error
|
||||||
// CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。
|
|
||||||
// 如果触发器已存在,会根据计划类型更新其执行时间。
|
|
||||||
CreateOrUpdateTrigger(planID uint) error
|
|
||||||
// EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。
|
|
||||||
// 如果不存在,则会自动创建。此方法不涉及待执行队列。
|
|
||||||
EnsureAnalysisTaskDefinition(planID uint) error
|
|
||||||
// TODO: 在这里添加其他与计划相关的领域服务方法
|
// TODO: 在这里添加其他与计划相关的领域服务方法
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,17 +52,3 @@ func (s *planServiceImpl) RefreshPlanTriggers() error {
|
|||||||
s.logger.Infof("PlanService 正在刷新计划触发器...")
|
s.logger.Infof("PlanService 正在刷新计划触发器...")
|
||||||
return s.taskManager.Refresh()
|
return s.taskManager.Refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。
|
|
||||||
// 如果触发器已存在,会根据计划类型更新其执行时间。
|
|
||||||
func (s *planServiceImpl) CreateOrUpdateTrigger(planID uint) error {
|
|
||||||
s.logger.Infof("PlanService 正在为计划 %d 创建或更新触发器...", planID)
|
|
||||||
return s.taskManager.CreateOrUpdateTrigger(planID)
|
|
||||||
}
|
|
||||||
|
|
||||||
// EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。
|
|
||||||
// 如果不存在,则会自动创建。此方法不涉及待执行队列。
|
|
||||||
func (s *planServiceImpl) EnsureAnalysisTaskDefinition(planID uint) error {
|
|
||||||
s.logger.Infof("PlanService 正在确保计划 %d 的分析任务定义...", planID)
|
|
||||||
return s.taskManager.EnsureAnalysisTaskDefinition(planID)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user