---初始化项目
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
/**
|
||||
* 最低内存空间,单位 GB,0代表不限
|
||||
*/
|
||||
private double minMemorySpace;
|
||||
/**
|
||||
* 最低磁盘空间,单位 GB,0代表不限
|
||||
*/
|
||||
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;
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package tech.powerjob.common.response;
|
||||
|
||||
/**
|
||||
* 主要目的:消除 idea 烦人的类型提示
|
||||
*
|
||||
* @author tjq
|
||||
* @since 2023/9/2
|
||||
*/
|
||||
public class ObjectResultDTO extends ResultDTO<Object> {
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user