Files
jx-callback/business/jxutils/tasksch/task_man.go
gazebo 81089fb85c - category sync almost ok.
- refactor tasksch (isContinueWhenError)
2018-09-22 10:26:31 +08:00

44 lines
1.5 KiB
Go

package tasksch
import (
"sort"
"time"
)
var (
defTaskMan TaskMan
)
type TaskMan struct {
taskList map[string]*Task
}
func init() {
defTaskMan.taskList = make(map[string]*Task)
}
func (m *TaskMan) RunTask(taskName string, isContinueWhenError bool, resultHandler ResultHandlerFunc, parallelCount, batchSize int, userName string, worker WorkFunc, itemList interface{}, params ...interface{}) *Task {
task := RunTask(taskName, isContinueWhenError, resultHandler, parallelCount, batchSize, userName, worker, itemList, params...)
m.taskList[task.ID] = task
return task
}
func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList []*Task) {
lastTime := time.Now().Add(time.Duration(-lastHours) * time.Hour).Unix()
for k, v := range m.taskList {
if !((taskID != "" && taskID != k) || v.Status < fromStatus || v.Status > toStatus || v.CreatedAt.Unix() < lastTime) {
taskList = append(taskList, v)
}
}
sort.Sort(TaskList(taskList))
return taskList
}
func RunManagedTask(taskName string, isContinueWhenError bool, resultHandler ResultHandlerFunc, parallelCount, batchSize int, userName string, worker WorkFunc, itemList interface{}, params ...interface{}) *Task {
return defTaskMan.RunTask(taskName, isContinueWhenError, resultHandler, parallelCount, batchSize, userName, worker, itemList, params...)
}
func GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList []*Task) {
return defTaskMan.GetTasks(taskID, fromStatus, toStatus, lastHours)
}