实现task工厂
This commit is contained in:
@@ -20,14 +20,6 @@ type DelayTask struct {
|
||||
logger *logs.Logger
|
||||
}
|
||||
|
||||
// NewDelayTask 创建一个新的 DelayTask 实例
|
||||
func NewDelayTask(logger *logs.Logger, executionTask *models.TaskExecutionLog) *DelayTask {
|
||||
return &DelayTask{
|
||||
executionTask: executionTask,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Execute 执行延迟任务,等待指定的时间
|
||||
func (d *DelayTask) Execute() error {
|
||||
d.logger.Infof("任务 %v: 开始延迟 %v...", d.executionTask.TaskID, d.duration)
|
||||
@@ -36,7 +28,10 @@ func (d *DelayTask) Execute() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *DelayTask) ParseParams() error {
|
||||
func (d *DelayTask) ParseParams(logger *logs.Logger, executionTask *models.TaskExecutionLog) error {
|
||||
d.logger = logger
|
||||
d.executionTask = executionTask
|
||||
|
||||
if d.executionTask.Task.Parameters == nil {
|
||||
d.logger.Errorf("任务 %v: 缺少参数", d.executionTask.TaskID)
|
||||
return fmt.Errorf("任务 %v: 参数不全", d.executionTask.TaskID)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package task
|
||||
|
||||
// PlanAnalysisTask 用于在任务执行队列中触发一个plan的执行
|
||||
// 该任务会解析plan生成扁平化的待执行任务表, 并将任务列表插入任务执行队列
|
||||
// 该任务会预写入plan所有待执行任务的执行日志
|
||||
// 每个plan执行完毕时 或 创建plan时 都应该重新创建一个 PlanAnalysisTask 以便触发下次plan执行
|
||||
// 更新plan后应当更新对应 PlanAnalysisTask
|
||||
type PlanAnalysisTask struct {
|
||||
}
|
||||
17
internal/app/service/task/task.go
Normal file
17
internal/app/service/task/task.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/task"
|
||||
)
|
||||
|
||||
// TaskFactory 是一个任务组装工厂, 可以根据Task类型获取到对应的初始化函数
|
||||
var TaskFactory = func(tt models.TaskType) task.Task {
|
||||
switch tt {
|
||||
case models.TaskTypeWaiting:
|
||||
return &DelayTask{}
|
||||
default:
|
||||
// 出现位置任务类型说明业务逻辑出现重大问题, 一个异常任务被创建了出来
|
||||
panic("发现未知任务类型")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user