taskmodel

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2024 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SubtaskStatus_Running   = 1
	SubtaskStatus_Finished  = 2
	SubtaskStatus_Cancelled = 3
	SubtaskStatus_Timeout   = 4
)

子任务的运行状态

Variables

This section is empty.

Functions

This section is empty.

Types

type CollectorInvoker

type CollectorInvoker func([]SubtaskResult) error

collector service invoker for executor

type CollectorRequestHandler

type CollectorRequestHandler func([]SubtaskResult) error

collector request handler for collector service

type ExecutorInvoker

type ExecutorInvoker func([]SubtaskBody) error

executor service invoker for scheduler

type ExecutorRequestHandler

type ExecutorRequestHandler func([]SubtaskBody) error

executor request handler for executor service

type ITaskCollectorCallback

type ITaskCollectorCallback interface {

	// 每次返回一次结果, 调用一次方法
	// 一个子任务执行完成后执行
	AfterExecution(subtaskResult *SubtaskResult, support ITaskCollectorSupport) (bool, error)

	// 整个任务完成时执行
	AfterTaskCompleted(taskId TaskIdType) (int, error)
}

任务的结果采集接口

type ITaskCollectorSupport

type ITaskCollectorSupport interface {
	AddSubtask(*SubtaskBody) error
}

type ITaskExecutor

type ITaskExecutor interface {

	// 实现子任务的操作
	Execute(subtaskData *SubtaskBody, result *SubtaskResult) error

	// 通知接口退出
	Cancel() error
}

任务的执行接口 实现任务的主要操作

type ITaskGenerator

type ITaskGenerator interface {

	// 任务开始时,通知接口开始执行生成操作
	Begin(taskId TaskIdType, taskType uint32, taskData *TaskParam, oldStatus string) error

	// 任务结束时,通知接口进行清理
	End(taskId TaskIdType) error

	// 通知接口取消生成操作
	Cancel(taskId TaskIdType) error

	// 保存任务的生成状态
	SaveStatus(taskId TaskIdType) (string, error)

	// 查询任务的生成进度
	QueryProgress(taskId TaskIdType) (float32, error)

	// 获取下一个子任务
	// 若无子任务,返回errordef.ErrNotFound; 否则返回nil;
	// 若生成完成,设置finished
	GetSubtask(taskId TaskIdType, subtaskData *SubtaskBody, finished *bool) error
}

任务的生成接口 接口将任务分解为可以并行执行的子任务, 返回给任务框架

type ITaskSchedulerCallback

type ITaskSchedulerCallback interface {

	// 在子任务被调度之前调用,可通过返回的bool来控制当前子任务是否被调度
	BeforeDispatch(subtaskId SubtaskIdType, subtaskData *SubtaskBody) (bool, error)

	// 子任务被调度进入执行后执行
	AfterDispatch(subtaskId SubtaskIdType) error
}

任务的调度接口 响应一些调度操作

type PluginBody

type PluginBody struct {
	Generator         ITaskGenerator
	Executor          ITaskExecutor
	SchedulerCallback ITaskSchedulerCallback
	CollectorCallback ITaskCollectorCallback
}

PluginBody 表示任务的执行体

type PluginConf

type PluginConf struct {
	IterationMode   TaskInterationMode // 任务支持的迭代模式
	TaskTypeTimeout time.Duration      // 此任务类型的最大执行时间限制
}

PluginConf 记录任务插件的配置信息

type RegisterCollectorRequestHandler

type RegisterCollectorRequestHandler func(CollectorRequestHandler) error

type RegisterExecutorRequestHandler

type RegisterExecutorRequestHandler func(ExecutorRequestHandler) error

type SubtaskBody

type SubtaskBody struct {
	SubtaskId    SubtaskIdType `json:"subtask_id"`    // 子任务ID
	TaskId       TaskIdType    `json:"task_id"`       // 所属的任务ID
	TaskType     uint32        `json:"task_type"`     // 任务类型
	Timeout      uint32        `json:"timeout"`       // 子任务的超时值, 秒
	TypeParam    string        `json:"type_param"`    // 子任务与类型相关的参数数, json
	CreatedAt    time.Time     `json:"created_at"`    // 子任务创建的时间
	TerminatedAt time.Time     `json:"terminated_at"` // 子任务结束的时间
}

子任务的参数体

type SubtaskIdType

type SubtaskIdType uint64

定义子任务ID的类型

func (SubtaskIdType) MarshalBinary

func (id SubtaskIdType) MarshalBinary() (data []byte, err error)

Marshal

func (*SubtaskIdType) UnmarshalBinary

func (id *SubtaskIdType) UnmarshalBinary(data []byte) error

Unmarshal

type SubtaskResult

type SubtaskResult struct {
	SubtaskId  SubtaskIdType     `json:"subtask_id"`  // 子任务ID
	TaskId     TaskIdType        `json:"task_id"`     // 所属的任务ID
	Result     SubtaskResultType `json:"result"`      // 子任务的结果
	ResultCode uint32            `json:"result_code"` // 子任务的结果码
	ResultMsg  string            `json:"result_msg"`  // 原因
	ResultBody string            `json:"result_body"` // 子任务与类型相关的结果数据
}

子任务执行的结果

type SubtaskResultType

type SubtaskResultType uint32

子任务结果类型

const (
	SubtaskResult_Success SubtaskResultType = 1 // 子任务执行成功
	SubtaskResult_Failure SubtaskResultType = 2 // 子任务执行失败
	SubtaskResult_Timeout SubtaskResultType = 3 // 子任务超时
)

type TaskCreator

type TaskCreator struct {
	UID  uint64 `json:"uid"`  // 用户id, 由调用者自行定义
	Name string `json:"name"` // 用户名, 同调用者自行定义
}

任务创建者结构

type TaskIdType

type TaskIdType uint64

定义任务ID的类型

func (TaskIdType) MarshalBinary

func (taskId TaskIdType) MarshalBinary() (data []byte, err error)

Marshal

func (*TaskIdType) UnmarshalBinary

func (taskId *TaskIdType) UnmarshalBinary(data []byte) error

Unmarshal

type TaskInterationMode

type TaskInterationMode int

迭代模式

const (
	IterationMode_No           TaskInterationMode = 1 // 不支持迭代
	IterationMode_UseCollector TaskInterationMode = 2 // 支持子任务迭代
)

type TaskParam

type TaskParam struct {
	Creator       TaskCreator   `json:"creator"`        // 任务创建者
	ResourceGroup string        `json:"resource_group"` // 任务所属的资源组名称
	Priority      uint32        `json:"priority"`       // 任务的基础优先级
	TaskName      string        `json:"task_name"`      // 任务名
	Description   string        `json:"description"`    // 任务描述
	TaskType      uint32        `json:"task_type"`      // 任务类型
	Timeout       time.Duration `json:"timeout"`        // 任务的超时值
	TypeParam     string        `json:"type_param"`     // 任务的自定义参数
}

任务的创建参数

type TaskResult

type TaskResult struct {
	TaskId     TaskIdType     `json:"task_id"`     // 任务ID
	Result     TaskStatusType `json:"result"`      // 任务的结果
	ResultCode uint32         `json:"result_code"` // 任务的结果码
	Reason     string         `json:"reason"`      // 结果描述
	ResultData string         `json:"result_data"` // 与任务类型相关的结果数据
}

任务的执行结果

type TaskStatusData

type TaskStatusData struct {
	TaskId        TaskIdType     `json:"task_id"`        // 任务ID
	TaskType      uint32         `json:"task_type"`      // 任务类型
	TaskStatus    TaskStatusType `json:"task_status"`    // 任务的状态
	TaskProgress  float32        `json:"task_progress"`  // 任务执行的进度
	Priority      uint32         `json:"priority"`       // 任务优先级
	SubtaskCount  uint32         `json:"subtask_count"`  // 任务包含的子任务数量
	StartTime     time.Time      `json:"start_time"`     // 任务的开始时间
	ResourceGroup string         `json:"resource_group"` // 任务所属的资源组名
	TaskName      string         `json:"task_name"`      // 任务名
}

任务的执行状态数据

type TaskStatusType

type TaskStatusType uint32

任务状态的类型

const (
	TaskStatus_Created     TaskStatusType = 1 // 已创建
	TaskStatus_Running     TaskStatusType = 2 // 运行中
	TaskStatus_Paused      TaskStatusType = 3 // 暂停中
	TaskStatus_Cacelled    TaskStatusType = 4 // 已取消
	TaskStatus_Completed   TaskStatusType = 5 // 已完成
	TaskStatus_Exceptional TaskStatusType = 6 // 异常
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL