package tech.powerjob.worker.persistence;
|
|
import lombok.Getter;
|
import lombok.Setter;
|
import org.apache.commons.lang3.StringUtils;
|
|
/**
|
* TaskDO(为了简化 DAO 层,一张表实现两种功能)
|
* 对于 TaskTracker,task_info 存储了当前 JobInstance 所有的子任务信息
|
* 对于普通的 Worker,task_info 存储了当前无法处理的任务信息
|
*
|
* @author tjq
|
* @since 2020/3/17
|
*/
|
@Getter
|
@Setter
|
public class TaskDO {
|
|
/**
|
* 层次命名法,可以表示 Map 后的父子关系,如 0.1.2 代表 rootTask map 的第一个 task map 的第二个 task
|
*/
|
private String taskId;
|
/**
|
* 任务实例 ID
|
*/
|
private Long instanceId;
|
/**
|
* 秒级任务专用
|
* 对于普通任务而言 等于 instanceId
|
* 对于秒级(固定频率)任务 自增长
|
*/
|
private Long subInstanceId;
|
/**
|
* 任务名称
|
*/
|
private String taskName;
|
/**
|
* 任务对象(序列化后的二进制数据)
|
*/
|
private byte[] taskContent;
|
/**
|
* 对于TaskTracker为workerAddress(派发地址),对于普通Worker为TaskTrackerAddress(汇报地址),所有地址都是 IP:Port
|
*/
|
private String address;
|
/**
|
* 任务状态,0~10代表 JobTracker 使用,11~20代表普通Worker使用
|
*/
|
private Integer status;
|
/**
|
* 执行结果
|
*/
|
private String result;
|
/**
|
* 失败次数
|
*/
|
private Integer failedCnt;
|
/**
|
* 创建时间
|
*/
|
private Long createdTime;
|
/**
|
* 最后修改时间
|
*/
|
private Long lastModifiedTime;
|
/**
|
* ProcessorTracker 最后上报时间
|
*/
|
private Long lastReportTime;
|
|
public String fetchUpdateSQL() {
|
StringBuilder sb = new StringBuilder();
|
|
// address 有置空需求,仅判断 NULL
|
if (address != null) {
|
sb.append(" address = '").append(address).append("',");
|
}
|
if (status != null) {
|
sb.append(" status = ").append(status).append(",");
|
}
|
if (!StringUtils.isEmpty(result)) {
|
sb.append(" result = '").append(result).append("',");
|
}
|
if (failedCnt != null) {
|
sb.append(" failed_cnt = ").append(failedCnt).append(",");
|
}
|
if (lastReportTime != null) {
|
sb.append(" last_report_time = ").append(lastReportTime).append(",");
|
}
|
sb.append(" last_modified_time = ").append(lastModifiedTime == null ? System.currentTimeMillis() : lastModifiedTime);
|
return sb.toString();
|
}
|
|
@Override
|
public String toString() {
|
return "{" +
|
"taskId='" + taskId + '\'' +
|
", instanceId=" + instanceId +
|
", subInstanceId=" + subInstanceId +
|
", taskName='" + taskName + '\'' +
|
", address='" + address + '\'' +
|
", status=" + status +
|
", result='" + result + '\'' +
|
", failedCnt=" + failedCnt +
|
", createdTime=" + createdTime +
|
", lastModifiedTime=" + lastModifiedTime +
|
", lastReportTime=" + lastReportTime +
|
'}';
|
}
|
}
|