---初始化项目

This commit is contained in:
2025-09-19 16:14:08 +08:00
parent 902d3d7e3b
commit afee7c03ac
767 changed files with 75809 additions and 82 deletions

View File

@ -0,0 +1,61 @@
package tech.powerjob.common.response;
import tech.powerjob.common.PowerSerializable;
import tech.powerjob.common.serialize.JsonUtils;
import lombok.*;
import java.nio.charset.StandardCharsets;
/**
* Pattens.ask 的响应
*
* @author tjq
* @since 2020/3/18
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AskResponse implements PowerSerializable {
private boolean success;
/*
- 使用 Object 会报错java.lang.ClassCastException: scala.collection.immutable.HashMap cannot be cast to XXX只能自己序列化反序列化了
- 嵌套类型(比如 Map<String, B>如果B也是个复杂对象那么反序列化后B的类型为 LinkedHashMap... 处理比较麻烦转成JSON再转回来
- 考虑到多语言通讯data 必须使用 JSON 序列化为字节数组
*/
private byte[] data;
// 错误信息
private String message;
public static AskResponse succeed(Object data) {
AskResponse r = new AskResponse();
r.success = true;
if (data != null) {
if (data instanceof String) {
r.data = ((String) data).getBytes(StandardCharsets.UTF_8);
} else {
r.data = JsonUtils.toBytes(data);
}
}
return r;
}
public static AskResponse failed(String msg) {
AskResponse r = new AskResponse();
r.success = false;
r.message = msg;
return r;
}
public <T> T getData(Class<T> clz) throws Exception {
return JsonUtils.parseObject(data, clz);
}
public String parseDataAsString() {
return new String(data, StandardCharsets.UTF_8);
}
}

View File

@ -0,0 +1,86 @@
package tech.powerjob.common.response;
import tech.powerjob.common.enums.InstanceStatus;
import lombok.Data;
import java.util.Date;
/**
* instanceInfo Network transmission object
*
* @author tjq
* @since 2020/5/14
*/
@Data
public class InstanceInfoDTO {
/**
* 任务ID
*/
private Long jobId;
/**
* 任务所属应用的ID冗余提高查询效率
*/
private Long appId;
/**
* 任务实例ID
*/
private Long instanceId;
/**
* 工作流实例ID
*/
private Long wfInstanceId;
/**
* 任务参数
*/
private String jobParams;
/**
* 任务实例参数
*/
private String instanceParams;
/**
* 任务状态 {@link InstanceStatus}
*/
private int status;
/**
* 该任务实例的类型,普通/工作流InstanceType
*/
private Integer type;
/**
* 执行结果
*/
private String result;
/**
* 预计触发时间
*/
private Long expectedTriggerTime;
/**
* 实际触发时间
*/
private Long actualTriggerTime;
/**
* 结束时间
*/
private Long finishedTime;
/**
* TaskTracker地址
*/
private String taskTrackerAddress;
/**
* 总共执行的次数(用于重试判断)
*/
private Long runningTimes;
/**
* “外键”,用于 OPENAPI 场景业务场景与 PowerJob 实例的绑定
*/
private String outerKey;
/**
* 扩展属性,用于 OPENAPI 场景上下文参数的透传
*/
private String extendValue;
private Date gmtCreate;
private Date gmtModified;
}

View File

@ -0,0 +1,149 @@
package tech.powerjob.common.response;
import lombok.Data;
import tech.powerjob.common.model.AlarmConfig;
import tech.powerjob.common.model.JobAdvancedRuntimeConfig;
import tech.powerjob.common.model.LogConfig;
import java.util.Date;
/**
* jobInfo 对外输出对象
*
* @author tjq
* @since 2020/5/14
*/
@Data
public class JobInfoDTO {
private Long id;
/* ************************** 任务基本信息 ************************** */
/**
* 任务名称
*/
private String jobName;
/**
* 任务描述
*/
private String jobDescription;
/**
* 任务所属的应用ID
*/
private Long appId;
/**
* 任务自带的参数
*/
private String jobParams;
/* ************************** 定时参数 ************************** */
/**
* 时间表达式类型CRON/API/FIX_RATE/FIX_DELAY
*/
private Integer timeExpressionType;
/**
* 时间表达式CRON/NULL/LONG/LONG
*/
private String timeExpression;
/* ************************** 执行方式 ************************** */
/**
* 执行类型,单机/广播/MR
*/
private Integer executeType;
/**
* 执行器类型Java/Shell
*/
private Integer processorType;
/**
* 执行器信息
*/
private String processorInfo;
/* ************************** 运行时配置 ************************** */
/**
* 最大同时运行任务数,默认 1
*/
private Integer maxInstanceNum;
/**
* 并发度,同时执行某个任务的最大线程数量
*/
private Integer concurrency;
/**
* 任务整体超时时间
*/
private Long instanceTimeLimit;
/** ************************** 重试配置 ************************** */
private Integer instanceRetryNum;
private Integer taskRetryNum;
/**
* 1 正常运行2 停止(不再调度)
*/
private Integer status;
/**
* 下一次调度时间
*/
private Long nextTriggerTime;
/* ************************** 繁忙机器配置 ************************** */
/**
* 最低CPU核心数量0代表不限
*/
private double minCpuCores;
/**
* 最低内存空间,单位 GB0代表不限
*/
private double minMemorySpace;
/**
* 最低磁盘空间,单位 GB0代表不限
*/
private double minDiskSpace;
/* ************************** 集群配置 ************************** */
/**
* 指定机器运行,空代表不限,非空则只会使用其中的机器运行(多值逗号分割)
*/
private String designatedWorkers;
/**
* 最大机器数量
*/
private Integer maxWorkerCount;
/**
* 报警用户ID列表多值逗号分隔
*/
private String notifyUserIds;
private Date gmtCreate;
private Date gmtModified;
private String extra;
/**
* 派发策略
*/
private Integer dispatchStrategy;
/**
* 某种派发策略背后的具体配置,值取决于 dispatchStrategy
*/
private String dispatchStrategyConfig;
private String lifecycle;
private AlarmConfig alarmConfig;
/**
* 任务归类,开放给接入方自由定制
*/
private String tag;
/**
* 日志配置,包括日志级别、日志方式等配置信息
*/
private LogConfig logConfig;
private JobAdvancedRuntimeConfig advancedRuntimeConfig;
}

View File

@ -0,0 +1,10 @@
package tech.powerjob.common.response;
/**
* 主要目的:消除 idea 烦人的类型提示
*
* @author tjq
* @since 2023/9/2
*/
public class ObjectResultDTO extends ResultDTO<Object> {
}

View File

@ -0,0 +1,42 @@
package tech.powerjob.common.response;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* 分页对象
*
* @author tjq
* @since 2020/4/12
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class PageResult<T> implements Serializable {
/**
* 当前页数
*/
private int index;
/**
* 页大小
*/
private int pageSize;
/**
* 总页数
*/
private int totalPages;
/**
* 总数据量
*/
private long totalItems;
/**
* 数据
*/
private List<T> data;
}

View File

@ -0,0 +1,47 @@
package tech.powerjob.common.response;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.exception.ExceptionUtils;
import tech.powerjob.common.enums.ErrorCodes;
import tech.powerjob.common.exception.PowerJobException;
/**
* 新的 Result带状态码
*
* @author 程序帕鲁
* @since 2024/2/19
*/
@Getter
@Setter
public class PowerResultDTO<T> extends ResultDTO<T> {
private String code;
public static <T> PowerResultDTO<T> s(T data) {
PowerResultDTO<T> r = new PowerResultDTO<>();
r.success = true;
r.data = data;
return r;
}
public static <T> PowerResultDTO<T> f(String message) {
PowerResultDTO<T> r = new PowerResultDTO<>();
r.success = false;
r.message = message;
return r;
}
public static <T> PowerResultDTO<T> f(Throwable t) {
PowerResultDTO<T> f = f(ExceptionUtils.getStackTrace(t));
f.setCode(ErrorCodes.SYSTEM_UNKNOWN_ERROR.getCode());
return f;
}
public static <T> PowerResultDTO<T> f(PowerJobException pje) {
PowerResultDTO<T> f = f(pje.getMessage());
f.setCode(pje.getCode());
return f;
}
}

View File

@ -0,0 +1,47 @@
package tech.powerjob.common.response;
import tech.powerjob.common.PowerSerializable;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang3.exception.ExceptionUtils;
/**
* The result object returned by the request
* <p>
* 低版本由于 Jackson 序列化配置问题,导致无法在此对象上新增任何字段了,否则会报错 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "code" (class tech.powerjob.common.response.ObjectResultDTO), not marked as ignorable (3 known properties: "data", "success", "message"])
* at [Source: (String)"{"success":true,"code":null,"data":2,"message":null}"; line: 1, column: 28] (through reference chain: tech.powerjob.common.response.ObjectResultDTO["code"])
* <p>
* 短期内所有的新增字段需求,都通过新对象继承实现
*
* @author tjq
* @since 2020/3/30
*/
@Getter
@Setter
@ToString
public class ResultDTO<T> implements PowerSerializable {
protected boolean success;
protected T data;
protected String message;
public static <T> ResultDTO<T> success(T data) {
ResultDTO<T> r = new ResultDTO<>();
r.success = true;
r.data = data;
return r;
}
public static <T> ResultDTO<T> failed(String message) {
ResultDTO<T> r = new ResultDTO<>();
r.success = false;
r.message = message;
return r;
}
public static <T> ResultDTO<T> failed(Throwable t) {
return failed(ExceptionUtils.getStackTrace(t));
}
}

View File

@ -0,0 +1,73 @@
package tech.powerjob.common.response;
import tech.powerjob.common.model.PEWorkflowDAG;
import lombok.Data;
import java.util.Date;
/**
* workflowInfo 对外输出对象
*
* @author tjq
* @since 2020/6/2
*/
@Data
public class WorkflowInfoDTO {
private Long id;
private String wfName;
private String wfDescription;
/**
* 所属应用ID
*/
private Long appId;
/**
* 工作流的DAG图信息点线式DAG的json
*/
private PEWorkflowDAG pEWorkflowDAG;
/* ************************** 定时参数 ************************** */
/**
* 时间表达式类型CRON/API/FIX_RATE/FIX_DELAY
*/
private String timeExpressionType;
/**
* 时间表达式CRON/NULL/LONG/LONG
*/
private String timeExpression;
/**
* 最大同时运行的工作流个数,默认 1
*/
private Integer maxWfInstanceNum;
/**
* 1 正常运行2 停止(不再调度)
*/
private Integer status;
/**
* 下一次调度时间
*/
private Long nextTriggerTime;
/**
* 工作流整体失败的报警
*/
private String notifyUserIds;
private Date gmtCreate;
private Date gmtModified;
/**
* ENABLE / DISABLE
*
* status 字段的转义
*/
private Boolean enable;
}

View File

@ -0,0 +1,53 @@
package tech.powerjob.common.response;
import lombok.Data;
import java.util.Date;
/**
* WorkflowInstanceInfo 对外输出对象
*
* @author tjq
* @since 2020/6/2
*/
@Data
public class WorkflowInstanceInfoDTO {
private Long id;
private Long appId;
private Long wfInstanceId;
private Long workflowId;
/**
* workflow 状态WorkflowInstanceStatus
*/
private Integer status;
/**
* 工作流启动参数
*/
private String wfInitParams;
/**
* 工作流上下文
*/
private String wfContext;
private String dag;
private String result;
/**
* 预计触发时间
*/
private Long expectedTriggerTime;
/**
* 实际触发时间
*/
private Long actualTriggerTime;
/**
* 结束时间
*/
private Long finishedTime;
private Date gmtCreate;
private Date gmtModified;
}

View File

@ -0,0 +1,50 @@
package tech.powerjob.common.response;
import lombok.Data;
import java.util.Date;
/**
* WorkflowNodeInfo 对外输出对象
* @author Echo009
* @since 2021/2/20
*/
@Data
public class WorkflowNodeInfoDTO {
private Long id;
private Long appId;
private Long workflowId;
/**
* 任务 ID
*/
private Long jobId;
/**
* 节点别名,默认为对应的任务名称
*/
private String nodeAlias;
/**
* 节点参数
*/
private String nodeParams;
/**
* 是否启用
*/
private Boolean enable;
/**
* 是否允许失败跳过
*/
private Boolean skipWhenFailed;
/**
* 创建时间
*/
private Date gmtCreate;
/**
* 更新时间
*/
private Date gmtModified;
}