From 40d16177dd96708417eb49cd182f759674ba476c Mon Sep 17 00:00:00 2001
From: opensnail <598092184@qq.com>
Date: Sat, 19 Oct 2024 19:06:45 +0800
Subject: [PATCH] =?UTF-8?q?feat:(1.2.0-beta2):=20=E4=BC=98=E5=8C=96openapi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../snail-job-client-common/pom.xml | 6 -
.../snail-job-client-job-core/pom.xml | 10 +
.../core/handler/AbstractRequestHandler.java | 17 +-
.../job/core/handler/RequestAddHandler.java | 253 ------------------
.../job/core/handler/add/AddHandler.java | 221 +++++++++++++++
.../core/handler/add/BroadcastAddHandler.java | 30 +++
.../core/handler/add/ClusterAddHandler.java | 34 +++
.../job/core/handler/add/MapAddHandler.java | 32 +++
.../core/handler/add/MapReduceAddHandler.java | 32 +++
.../core/handler/add/ShardingAddHandler.java | 32 +++
.../{ => quert}/RequestQueryHandler.java | 20 +-
.../RequestTriggerJobHandler.java | 20 +-
.../{ => update}/RequestUpdateHandler.java | 138 ++++++----
.../RequestUpdateStatusHandler.java | 30 ++-
.../job/core/openapi/SnailJobOpenApi.java | 48 ++--
.../client/job/core/util/ValidatorUtils.java | 21 +-
.../src/main/resources/application.yml | 2 +-
18 files changed, 582 insertions(+), 366 deletions(-)
delete mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestAddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/AddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/BroadcastAddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ClusterAddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapAddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapReduceAddHandler.java
create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ShardingAddHandler.java
rename snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/{ => quert}/RequestQueryHandler.java (53%)
rename snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/{ => trigger}/RequestTriggerJobHandler.java (64%)
rename snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/{ => update}/RequestUpdateHandler.java (62%)
rename snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/{ => update}/RequestUpdateStatusHandler.java (69%)
diff --git a/pom.xml b/pom.xml
index 64d85f92d..ddfa3c3bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
17
17
17
- 1.2.0-beta1.1
+ 1.2.0-beta2
4.1.94.Final
5.8.25
3.5.8
diff --git a/snail-job-client/snail-job-client-common/pom.xml b/snail-job-client/snail-job-client-common/pom.xml
index 92ac93008..91eb8296b 100644
--- a/snail-job-client/snail-job-client-common/pom.xml
+++ b/snail-job-client/snail-job-client-common/pom.xml
@@ -86,12 +86,6 @@
log4j
true
-
-
- org.hibernate
- hibernate-validator
- ${hibernate.verion}
-
diff --git a/snail-job-client/snail-job-client-job-core/pom.xml b/snail-job-client/snail-job-client-job-core/pom.xml
index 520344c20..821599051 100644
--- a/snail-job-client/snail-job-client-job-core/pom.xml
+++ b/snail-job-client/snail-job-client-job-core/pom.xml
@@ -18,6 +18,7 @@
17
17
UTF-8
+ 8.0.1.Final
@@ -50,6 +51,15 @@
com.google.guava
guava
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+ org.hibernate
+ hibernate-validator
+ ${hibernate.verion}
+
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractRequestHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractRequestHandler.java
index 19bc328ce..4a73dd199 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractRequestHandler.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractRequestHandler.java
@@ -1,5 +1,6 @@
package com.aizuda.snailjob.client.job.core.handler;
+import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
/**
@@ -16,14 +17,22 @@ public abstract class AbstractRequestHandler implements RequestHandler {
*/
@Override
public R execute() {
- if (checkRequest()) {
- return doExecute();
+ Pair checked = checkRequest();
+ if (checked.getKey()) {
+ beforeExecute();
+ R r = doExecute();
+ afterExecute(r);
+ return r;
} else {
- throw new SnailJobClientException("snail job openapi check error");
+ throw new SnailJobClientException("snail job openapi check error. [{}]", checked.getValue());
}
}
+ protected abstract void afterExecute(R r);
+
+ protected abstract void beforeExecute();
+
protected abstract R doExecute();
- protected abstract boolean checkRequest();
+ protected abstract Pair checkRequest();
}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestAddHandler.java
deleted file mode 100644
index e3e79a18b..000000000
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestAddHandler.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package com.aizuda.snailjob.client.job.core.handler;
-
-import cn.hutool.core.util.StrUtil;
-import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
-import com.aizuda.snailjob.client.job.core.dto.RequestAddJobDTO;
-import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
-import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum;
-import com.aizuda.snailjob.client.job.core.util.ValidatorUtils;
-import com.aizuda.snailjob.common.core.enums.*;
-import com.aizuda.snailjob.common.core.util.JsonUtil;
-import com.aizuda.snailjob.common.log.SnailJobLog;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class RequestAddHandler extends AbstractRequestHandler {
- private final RequestAddJobDTO requestAddJobDTO;
-
- public RequestAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
- this.requestAddJobDTO = new RequestAddJobDTO();
- // 默认创建就开启
- requestAddJobDTO.setJobStatus(StatusEnum.YES.getStatus());
- // 设置任务类型
- requestAddJobDTO.setTaskType(taskType.getType());
- // 默认java
- requestAddJobDTO.setExecutorType(ExecutorTypeEnum.JAVA.getType());
- // 设置分片
- if (shardNum != null) {
- Map map = new HashMap<>(1);
- map.put(SHARD_NUM, shardNum);
- requestAddJobDTO.setArgsStr(JsonUtil.toJsonString(map));
- }
- }
-
-
- @Override
- protected Long doExecute() {
- String data = JsonUtil.toJsonString(client.addJob(requestAddJobDTO).getData());
- return Long.valueOf(data);
- }
-
- @Override
- protected boolean checkRequest() {
- boolean validated = ValidatorUtils.validateEntity(requestAddJobDTO);
- // 如果校验正确,则正对进行相关筛选
- if (validated) {
- if (requestAddJobDTO.getTaskType() == JobTaskTypeEnum.CLUSTER.getType()) {
- // 集群模式只允许并发为 1
- setParallelNum(1);
- }
- if (requestAddJobDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()) {
- // 工作流没有调度时间
- setTriggerInterval("*");
- }
- }
- return validated;
- }
-
- /**
- * 设置任务名
- *
- * @param jobName 任务名
- * @return
- */
- public RequestAddHandler setJobName(String jobName) {
- requestAddJobDTO.setJobName(jobName);
- return this;
- }
-
- /**
- * 设置参数
- *
- * @param argsStr
- * @return
- */
- private RequestAddHandler setArgsStr(Map argsStr) {
- Map args = new HashMap<>();
- if (StrUtil.isNotBlank(requestAddJobDTO.getArgsStr())) {
- args = JsonUtil.parseHashMap(requestAddJobDTO.getArgsStr());
- }
- args.putAll(argsStr);
- requestAddJobDTO.setArgsStr(JsonUtil.toJsonString(args));
- requestAddJobDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
- return this;
- }
-
- /**
- * 添加参数,可支持多次添加
- * 静态分片不可使用该方法
- *
- * @param argsKey 参数名
- * @param argsValue 参数值
- * @return
- */
- public RequestAddHandler addArgsStr(String argsKey, Object argsValue) {
- if (requestAddJobDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
- SnailJobLog.LOCAL.warn("静态分片任务,不可使用该方法添加相关任务参数,请使用addShardingArgs");
- return this;
- }
- Map map = new HashMap<>();
- if (StrUtil.isNotBlank(requestAddJobDTO.getArgsStr())) {
- map = JsonUtil.parseHashMap(requestAddJobDTO.getArgsStr());
- }
- map.put(argsKey, argsValue);
- requestAddJobDTO.setArgsStr(JsonUtil.toJsonString(map));
- requestAddJobDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
- return this;
- }
-
- /**
- * 添加静态分片相关参数
- *
- * @param shardingValue
- * @return
- */
- public RequestAddHandler addShardingArgs(String[] shardingValue) {
- if (!requestAddJobDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
- SnailJobLog.LOCAL.warn("非静态分片任务,不可使用该方法添加相关任务参数,请使用addArgsStr");
- return this;
- }
- requestAddJobDTO.setArgsStr(JsonUtil.toJsonString(shardingValue));
- requestAddJobDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType());
- return this;
- }
-
- /**
- * 设置路由
- *
- * @param algorithmEnum 路由算法
- * @return
- */
- public RequestAddHandler setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
- // 非集群模式 路由策略只能为轮询
- if (requestAddJobDTO.getTaskType() != JobTaskTypeEnum.CLUSTER.getType()) {
- setRouteKey(AllocationAlgorithmEnum.ROUND);
- SnailJobLog.LOCAL.warn("非集群模式 路由策略只能为轮询");
- return this;
- }
- requestAddJobDTO.setRouteKey(algorithmEnum.getType());
- return this;
- }
-
- /**
- * 设置执行器信息
- *
- * @param executorInfo
- * @return
- */
- public RequestAddHandler setExecutorInfo(String executorInfo) {
- requestAddJobDTO.setExecutorInfo(executorInfo);
- return this;
- }
-
- /**
- * 设置调度类型
- *
- * @param triggerType
- * @return
- */
- public RequestAddHandler setTriggerType(TriggerTypeEnum triggerType) {
- requestAddJobDTO.setTriggerType(triggerType.getType());
- if (requestAddJobDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()) {
- // 工作流没有调度时间
- setTriggerInterval("*");
- }
- return this;
- }
-
- /**
- * 设置触发间隔;
- * 单位:秒
- * 工作流无需配置
- *
- * @param triggerInterval
- * @return
- */
- public RequestAddHandler setTriggerInterval(String triggerInterval) {
- requestAddJobDTO.setTriggerInterval(triggerInterval);
- return this;
- }
-
- /**
- * 设置阻塞策略
- *
- * @param blockStrategy
- * @return
- */
- public RequestAddHandler setBlockStrategy(BlockStrategyEnum blockStrategy) {
- // 非集群模式 路由策略只能为轮询
- if (requestAddJobDTO.getTaskType() == JobTaskTypeEnum.CLUSTER.getType()
- && blockStrategy.getBlockStrategy() == BlockStrategyEnum.CONCURRENCY.getBlockStrategy()) {
- throw new SnailJobClientException("集群模式不能使用并行阻塞策略");
- }
- requestAddJobDTO.setBlockStrategy(blockStrategy.getBlockStrategy());
- return this;
- }
-
- /**
- * 设置执行器超时时间
- *
- * @param executorTimeout
- * @return
- */
- public RequestAddHandler setExecutorTimeout(Integer executorTimeout) {
- requestAddJobDTO.setExecutorTimeout(executorTimeout);
- return this;
- }
-
- /**
- * 设置任务最大重试次数
- *
- * @param maxRetryTimes
- * @return
- */
- public RequestAddHandler setMaxRetryTimes(Integer maxRetryTimes) {
- requestAddJobDTO.setMaxRetryTimes(maxRetryTimes);
- return this;
- }
-
- /**
- * 设置重试间隔
- *
- * @param retryInterval
- * @return
- */
- public RequestAddHandler setRetryInterval(Integer retryInterval) {
- requestAddJobDTO.setRetryInterval(retryInterval);
- return this;
- }
-
- /**
- * 设置并发数量
- *
- * @param parallelNum
- * @return
- */
- public RequestAddHandler setParallelNum(Integer parallelNum) {
- requestAddJobDTO.setParallelNum(parallelNum);
- return this;
- }
-
- /**
- * 设置定时任务描述
- *
- * @param description
- * @return
- */
- public RequestAddHandler setDescription(String description) {
- requestAddJobDTO.setDescription(description);
- return this;
- }
-
-}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/AddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/AddHandler.java
new file mode 100644
index 000000000..6b4ac71d0
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/AddHandler.java
@@ -0,0 +1,221 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.lang.Pair;
+import cn.hutool.core.util.StrUtil;
+import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
+import com.aizuda.snailjob.client.job.core.dto.RequestAddJobDTO;
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum;
+import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
+import com.aizuda.snailjob.client.job.core.util.ValidatorUtils;
+import com.aizuda.snailjob.common.core.enums.*;
+import com.aizuda.snailjob.common.core.util.JsonUtil;
+import lombok.Setter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum.WORK_FLOW;
+
+public abstract class AddHandler extends AbstractRequestHandler {
+ private final RequestAddJobDTO reqDTO;
+ @Setter
+ private R r;
+ public AddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ this.reqDTO = new RequestAddJobDTO();
+ // 默认创建就开启
+ reqDTO.setJobStatus(StatusEnum.YES.getStatus());
+ // 设置任务类型
+ reqDTO.setTaskType(taskType.getType());
+ // 默认java
+ reqDTO.setExecutorType(ExecutorTypeEnum.JAVA.getType());
+ // 设置分片
+ if (shardNum != null) {
+ Map map = new HashMap<>(1);
+ map.put(SHARD_NUM, shardNum);
+ reqDTO.setArgsStr(JsonUtil.toJsonString(map));
+ }
+ }
+
+ @Override
+ protected Long doExecute() {
+ String data = JsonUtil.toJsonString(client.addJob(reqDTO).getData());
+ return Long.valueOf(data);
+ }
+
+ @Override
+ protected void beforeExecute() {
+ // 此次是兜底覆盖,工作流是没有调度时间
+ if (reqDTO.getTriggerType() == WORK_FLOW.getType()) {
+ setTriggerInterval("*");
+ }
+ }
+
+ @Override
+ protected void afterExecute(Long aLong) {
+ }
+
+ @Override
+ protected Pair checkRequest() {
+ return ValidatorUtils.validateEntity(reqDTO);
+ }
+
+ /**
+ * 设置任务名
+ *
+ * @param jobName 任务名
+ * @return
+ */
+ public R setJobName(String jobName) {
+ reqDTO.setJobName(jobName);
+ return r;
+ }
+
+ /**
+ * 添加参数,可支持多次添加
+ * 静态分片不可使用该方法
+ *
+ * @param argsKey 参数名
+ * @param argsValue 参数值
+ * @return
+ */
+ protected R addArgsStr(String argsKey, Object argsValue) {
+ Map map = new HashMap<>();
+ if (StrUtil.isNotBlank(reqDTO.getArgsStr())) {
+ map = JsonUtil.parseHashMap(reqDTO.getArgsStr());
+ }
+ map.put(argsKey, argsValue);
+ reqDTO.setArgsStr(JsonUtil.toJsonString(map));
+ reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
+ return r;
+ }
+
+ /**
+ * 添加静态分片相关参数
+ *
+ * @param shardingValue 分片参数
+ * @return r
+ */
+ protected R addShardingArgs(String ...shardingValue) {
+ reqDTO.setArgsStr(JsonUtil.toJsonString(shardingValue));
+ reqDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType());
+ return r;
+ }
+
+ /**
+ * 设置路由
+ *
+ * @param algorithmEnum 路由算法
+ * @return r
+ */
+ protected R setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
+ reqDTO.setRouteKey(algorithmEnum.getType());
+ return r;
+ }
+
+ /**
+ * 设置执行器信息
+ *
+ * @param executorInfo 执行器信息
+ * @return r
+ */
+ public R setExecutorInfo(String executorInfo) {
+ reqDTO.setExecutorInfo(executorInfo);
+ return r;
+ }
+
+ /**
+ * 设置调度类型
+ *
+ * @param triggerType 触发类型
+ * @return r
+ */
+ public R setTriggerType(TriggerTypeEnum triggerType) {
+ reqDTO.setTriggerType(triggerType.getType());
+ return r;
+ }
+
+ /**
+ * 设置触发间隔;
+ * 单位:秒
+ * 工作流无需配置
+ *
+ * @param triggerInterval 触发间隔
+ * @return r
+ */
+ public R setTriggerInterval(String triggerInterval) {
+ // 若是工作流则没有调度时间
+ Assert.isTrue(reqDTO.getTriggerType() == WORK_FLOW.getType(),
+ () -> new SnailJobClientException("工作流无需配置"));
+ reqDTO.setTriggerInterval(triggerInterval);
+ return r;
+ }
+
+ /**
+ * 设置阻塞策略
+ *
+ * @param blockStrategy 阻塞策略
+ * @return r
+ */
+ public R setBlockStrategy(BlockStrategyEnum blockStrategy) {
+ reqDTO.setBlockStrategy(blockStrategy.getBlockStrategy());
+ return r;
+ }
+
+ /**
+ * 设置执行器超时时间
+ *
+ * @param executorTimeout 超时时间(单位:秒)
+ * @return r
+ */
+ public R setExecutorTimeout(Integer executorTimeout) {
+ reqDTO.setExecutorTimeout(executorTimeout);
+ return r;
+ }
+
+ /**
+ * 设置任务最大重试次数
+ *
+ * @param maxRetryTimes 最大超时时间
+ * @return r
+ */
+ public R setMaxRetryTimes(Integer maxRetryTimes) {
+ reqDTO.setMaxRetryTimes(maxRetryTimes);
+ return r;
+ }
+
+ /**
+ * 设置重试间隔
+ *
+ * @param retryInterval 重试间隔
+ * @return r
+ */
+ public R setRetryInterval(Integer retryInterval) {
+ reqDTO.setRetryInterval(retryInterval);
+ return r;
+ }
+
+ /**
+ * 设置并发数量
+ *
+ * @param parallelNum 并发数量
+ * @return r
+ */
+ protected R setParallelNum(Integer parallelNum) {
+ reqDTO.setParallelNum(parallelNum);
+ return r;
+ }
+
+ /**
+ * 设置定时任务描述
+ *
+ * @param description 任务描述
+ * @return r
+ */
+ public R setDescription(String description) {
+ reqDTO.setDescription(description);
+ return r;
+ }
+
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/BroadcastAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/BroadcastAddHandler.java
new file mode 100644
index 000000000..d692de498
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/BroadcastAddHandler.java
@@ -0,0 +1,30 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
+
+/**
+ * @author opensnail
+ * @date 2024-10-19 12:25:49
+ * @since sj_1.1.0
+ */
+public class BroadcastAddHandler extends AddHandler {
+
+ public BroadcastAddHandler() {
+ this(JobTaskTypeEnum.CLUSTER, null);
+ }
+
+ public BroadcastAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ super(taskType, shardNum);
+ // 广播模式只允许并发为 1
+ setParallelNum(1);
+ // 广播模式采用轮询模式
+ setRouteKey(AllocationAlgorithmEnum.ROUND);
+ setR(this);
+ }
+
+ @Override
+ public BroadcastAddHandler addArgsStr(String argsKey, Object argsValue) {
+ return super.addArgsStr(argsKey, argsValue);
+ }
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ClusterAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ClusterAddHandler.java
new file mode 100644
index 000000000..427519c95
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ClusterAddHandler.java
@@ -0,0 +1,34 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
+
+/**
+ * @author opensnail
+ * @date 2024-10-19 12:25:49
+ * @since sj_1.2.0
+ */
+public class ClusterAddHandler extends AddHandler {
+
+ public ClusterAddHandler(JobTaskTypeEnum taskType) {
+ this(taskType, null);
+ }
+
+ public ClusterAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ super(taskType, shardNum);
+ // 集群模式只允许并发为 1
+ setParallelNum(1);
+ setR(this);
+ }
+
+ @Override
+ public ClusterAddHandler setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
+ super.setRouteKey(algorithmEnum);
+ return this;
+ }
+
+ @Override
+ public ClusterAddHandler addArgsStr(String argsKey, Object argsValue) {
+ return super.addArgsStr(argsKey, argsValue);
+ }
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapAddHandler.java
new file mode 100644
index 000000000..6feb30014
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapAddHandler.java
@@ -0,0 +1,32 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
+
+/**
+ * @author opensnail
+ * @date 2024-10-19 12:25:49
+ * @since sj_1.2.0
+ */
+public class MapAddHandler extends AddHandler {
+
+ public MapAddHandler() {
+ this(JobTaskTypeEnum.MAP, null);
+ }
+
+ public MapAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ super(taskType, shardNum);
+ setRouteKey(AllocationAlgorithmEnum.ROUND);
+ setR(this);
+ }
+
+ @Override
+ public MapAddHandler addShardingArgs(String... shardingValue) {
+ return super.addShardingArgs(shardingValue);
+ }
+
+ @Override
+ public MapAddHandler setParallelNum(Integer parallelNum) {
+ return super.setParallelNum(parallelNum);
+ }
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapReduceAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapReduceAddHandler.java
new file mode 100644
index 000000000..7fe10889d
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/MapReduceAddHandler.java
@@ -0,0 +1,32 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
+
+/**
+ * @author opensnail
+ * @date 2024-10-19 12:25:49
+ * @since sj_1.2.0
+ */
+public class MapReduceAddHandler extends AddHandler {
+
+ public MapReduceAddHandler(Integer shardNum) {
+ this(JobTaskTypeEnum.MAP_REDUCE, shardNum);
+ }
+
+ public MapReduceAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ super(taskType, shardNum);
+ setRouteKey(AllocationAlgorithmEnum.ROUND);
+ setR(this);
+ }
+
+ @Override
+ public MapReduceAddHandler addShardingArgs(String... shardingValue) {
+ return super.addShardingArgs(shardingValue);
+ }
+
+ @Override
+ public MapReduceAddHandler setParallelNum(Integer parallelNum) {
+ return super.setParallelNum(parallelNum);
+ }
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ShardingAddHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ShardingAddHandler.java
new file mode 100644
index 000000000..711711c1a
--- /dev/null
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/add/ShardingAddHandler.java
@@ -0,0 +1,32 @@
+package com.aizuda.snailjob.client.job.core.handler.add;
+
+import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
+import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
+
+/**
+ * @author opensnail
+ * @date 2024-10-19 12:25:49
+ * @since sj_1.2.0
+ */
+public class ShardingAddHandler extends AddHandler {
+
+ public ShardingAddHandler() {
+ this(JobTaskTypeEnum.SHARDING, null);
+ }
+
+ public ShardingAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {
+ super(taskType, shardNum);
+ setRouteKey(AllocationAlgorithmEnum.ROUND);
+ setR(this);
+ }
+
+ @Override
+ public ShardingAddHandler addShardingArgs(String... shardingValue) {
+ return super.addShardingArgs(shardingValue);
+ }
+
+ @Override
+ public ShardingAddHandler setParallelNum(Integer parallelNum) {
+ return super.setParallelNum(parallelNum);
+ }
+}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestQueryHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/quert/RequestQueryHandler.java
similarity index 53%
rename from snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestQueryHandler.java
rename to snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/quert/RequestQueryHandler.java
index 88af1ec4b..d6ac886f8 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestQueryHandler.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/quert/RequestQueryHandler.java
@@ -1,9 +1,11 @@
-package com.aizuda.snailjob.client.job.core.handler;
+package com.aizuda.snailjob.client.job.core.handler.quert;
import cn.hutool.core.lang.Assert;
+import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
import com.aizuda.snailjob.client.job.core.dto.JobResponseVO;
+import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
import com.aizuda.snailjob.common.core.util.JsonUtil;
import java.util.Objects;
@@ -15,16 +17,26 @@ public class RequestQueryHandler extends AbstractRequestHandler {
this.queryJobId = queryJobId;
}
+ @Override
+ protected void afterExecute(JobResponseVO jobResponseVO) {
+
+ }
+
+ @Override
+ protected void beforeExecute() {
+
+ }
+
@Override
protected JobResponseVO doExecute() {
Object data = client.getJobDetail(queryJobId).getData();
- Assert.isTrue(Objects.nonNull(data),()-> new SnailJobClientException("获取[{}]任务详情失败", queryJobId));
+ Assert.isTrue(Objects.nonNull(data), () -> new SnailJobClientException("获取[{}]任务详情失败", queryJobId));
return JsonUtil.parseObject(JsonUtil.toJsonString(data), JobResponseVO.class);
}
@Override
- protected boolean checkRequest() {
- return queryJobId != null && ! Long.valueOf(0).equals(queryJobId);
+ protected Pair checkRequest() {
+ return Pair.of(queryJobId != null && !Long.valueOf(0).equals(queryJobId), "queryJobId不能为null并且必须大于0");
}
}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestTriggerJobHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/RequestTriggerJobHandler.java
similarity index 64%
rename from snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestTriggerJobHandler.java
rename to snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/RequestTriggerJobHandler.java
index 1cce3441b..0ad300f2b 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestTriggerJobHandler.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/RequestTriggerJobHandler.java
@@ -1,9 +1,11 @@
-package com.aizuda.snailjob.client.job.core.handler;
+package com.aizuda.snailjob.client.job.core.handler.trigger;
+import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
import com.aizuda.snailjob.client.job.core.enums.JobTypeEnum;
+import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
-public class RequestTriggerJobHandler extends AbstractRequestHandler{
+public class RequestTriggerJobHandler extends AbstractRequestHandler {
private final Long triggerJobId;
// 1: job; 2: workflow
private final int triggerType;
@@ -13,6 +15,16 @@ public class RequestTriggerJobHandler extends AbstractRequestHandler{
this.triggerType = triggerType;
}
+ @Override
+ protected void afterExecute(Boolean aBoolean) {
+
+ }
+
+ @Override
+ protected void beforeExecute() {
+
+ }
+
@Override
protected Boolean doExecute() {
if (triggerType == JobTypeEnum.JOB.getType()) {
@@ -25,7 +37,7 @@ public class RequestTriggerJobHandler extends AbstractRequestHandler{
}
@Override
- protected boolean checkRequest() {
- return triggerJobId != null && !Long.valueOf(0).equals(triggerJobId);
+ protected Pair checkRequest() {
+ return Pair.of(triggerJobId != null && !Long.valueOf(0).equals(triggerJobId), "triggerJobId不能为null并且必须大于0");
}
}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateHandler.java
similarity index 62%
rename from snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateHandler.java
rename to snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateHandler.java
index c6d682275..40f7858c9 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateHandler.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateHandler.java
@@ -1,10 +1,12 @@
-package com.aizuda.snailjob.client.job.core.handler;
+package com.aizuda.snailjob.client.job.core.handler.update;
+import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
import com.aizuda.snailjob.client.job.core.dto.RequestUpdateJobDTO;
import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum;
+import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
import com.aizuda.snailjob.client.job.core.util.ValidatorUtils;
import com.aizuda.snailjob.common.core.enums.BlockStrategyEnum;
import com.aizuda.snailjob.common.core.enums.ExecutorTypeEnum;
@@ -15,63 +17,81 @@ import com.aizuda.snailjob.common.log.SnailJobLog;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
+
+import static com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum.CLUSTER;
public class RequestUpdateHandler extends AbstractRequestHandler {
- private final RequestUpdateJobDTO requestUpdateJobDTO;
+ private final RequestUpdateJobDTO reqDTO;
public RequestUpdateHandler(Long jobId) {
- this.requestUpdateJobDTO = new RequestUpdateJobDTO();
+ this.reqDTO = new RequestUpdateJobDTO();
// 更新必须要id
- requestUpdateJobDTO.setId(jobId);
+ reqDTO.setId(jobId);
// 默认java
- requestUpdateJobDTO.setExecutorType(ExecutorTypeEnum.JAVA.getType());
+ reqDTO.setExecutorType(ExecutorTypeEnum.JAVA.getType());
+ }
+
+ @Override
+ protected void afterExecute(Boolean aBoolean) {
+
+ }
+
+ @Override
+ protected void beforeExecute() {
+
}
@Override
protected Boolean doExecute() {
- return (Boolean) client.updateJob(requestUpdateJobDTO).getData();
+ return (Boolean) client.updateJob(reqDTO).getData();
}
@Override
- protected boolean checkRequest() {
- boolean validated = ValidatorUtils.validateEntity(requestUpdateJobDTO);
- // 如果校验正确,则正对进行相关筛选
- if (validated) {
- if (requestUpdateJobDTO.getTaskType() != null
- && requestUpdateJobDTO.getTaskType() == JobTaskTypeEnum.CLUSTER.getType()){
+ protected Pair checkRequest() {
+ Pair validated = ValidatorUtils.validateEntity(reqDTO);
+ if (!validated.getKey()) {
+ return validated;
+ }
+
+ // 如果校验正确,下面则进行相关参数填充
+ Optional.ofNullable(reqDTO.getTaskType()).ifPresent(taskType -> {
+ if (reqDTO.getTaskType() == CLUSTER.getType()) {
// 集群模式只允许并发为 1
setParallelNum(1);
- }
- // 非集群模式 路由策略只能为轮询
- if (requestUpdateJobDTO.getTaskType() != null
- && requestUpdateJobDTO.getTaskType() != JobTaskTypeEnum.CLUSTER.getType()){
+ } else {
+ // 非集群模式 路由策略只能为轮询
setRouteKey(AllocationAlgorithmEnum.ROUND);
}
- if (requestUpdateJobDTO.getTriggerType() != null
- && requestUpdateJobDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()){
+ });
+
+ Optional.ofNullable(reqDTO.getTriggerType()).ifPresent((triggerType) -> {
+ if (reqDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()) {
// 工作流没有调度时间
setTriggerInterval("*");
}
- }
+ });
+
return validated;
}
/**
* 修改Reduce的分片数
* 只允许MAP_REDUCE设置
+ *
* @param shardNum
* @return
*/
- public RequestUpdateHandler setShardNum(Integer shardNum){
- Integer taskType = requestUpdateJobDTO.getTaskType();
- if (taskType != null && taskType.equals(JobTaskTypeEnum.MAP_REDUCE.getType())){
+ public RequestUpdateHandler setShardNum(Integer shardNum) {
+ Integer taskType = reqDTO.getTaskType();
+ if (taskType != null && taskType.equals(JobTaskTypeEnum.MAP_REDUCE.getType())) {
// 设置分片
- if (shardNum != null){
+ if (shardNum != null) {
Map map = new HashMap<>(1);
map.put(SHARD_NUM, shardNum);
- requestUpdateJobDTO.setArgsStr(JsonUtil.toJsonString(map));
+ reqDTO.setArgsStr(JsonUtil.toJsonString(map));
}
- }else {
+ } else {
throw new SnailJobClientException("非MapReduce模式不能设置分片数");
}
return this;
@@ -79,28 +99,30 @@ public class RequestUpdateHandler extends AbstractRequestHandler {
/**
* 修改任务名称
+ *
* @param jobName
* @return
*/
public RequestUpdateHandler setJobName(String jobName) {
- requestUpdateJobDTO.setJobName(jobName);
+ reqDTO.setJobName(jobName);
return this;
}
/**
* 修改时会直接覆盖之前的任务参数
* 修改参数
+ *
* @param argsStr
* @return
*/
private RequestUpdateHandler setArgsStr(Map argsStr) {
Map args = new HashMap<>();
- if (StrUtil.isNotBlank(requestUpdateJobDTO.getArgsStr())){
- args = JsonUtil.parseHashMap(requestUpdateJobDTO.getArgsStr());
+ if (StrUtil.isNotBlank(reqDTO.getArgsStr())) {
+ args = JsonUtil.parseHashMap(reqDTO.getArgsStr());
}
args.putAll(argsStr);
- requestUpdateJobDTO.setArgsStr(JsonUtil.toJsonString(args));
- requestUpdateJobDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
+ reqDTO.setArgsStr(JsonUtil.toJsonString(args));
+ reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
return this;
}
@@ -108,69 +130,74 @@ public class RequestUpdateHandler extends AbstractRequestHandler {
* 修改时会直接覆盖之前的任务参数
* 添加参数,可支持多次添加
* 静态分片不可使用该方法
- * @param argsKey 参数名
+ *
+ * @param argsKey 参数名
* @param argsValue 参数值
* @return
*/
public RequestUpdateHandler addArgsStr(String argsKey, Object argsValue) {
- if (requestUpdateJobDTO.getTaskType() != null
- && requestUpdateJobDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())){
+ if (reqDTO.getTaskType() != null
+ && reqDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
SnailJobLog.LOCAL.warn("静态分片任务,不可使用该方法添加相关任务参数,请使用addShardingArgs");
return this;
}
Map map = new HashMap<>();
- if (StrUtil.isNotBlank(requestUpdateJobDTO.getArgsStr())){
- map = JsonUtil.parseHashMap(requestUpdateJobDTO.getArgsStr());
+ if (StrUtil.isNotBlank(reqDTO.getArgsStr())) {
+ map = JsonUtil.parseHashMap(reqDTO.getArgsStr());
}
map.put(argsKey, argsValue);
- requestUpdateJobDTO.setArgsStr(JsonUtil.toJsonString(map));
- requestUpdateJobDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
+ reqDTO.setArgsStr(JsonUtil.toJsonString(map));
+ reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
return this;
}
/**
* 添加静态分片相关参数
+ *
* @param shardingValue
* @return
*/
- public RequestUpdateHandler addShardingArgs(String[] shardingValue){
- if (requestUpdateJobDTO.getTaskType() != null
- && !requestUpdateJobDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())){
+ public RequestUpdateHandler addShardingArgs(String[] shardingValue) {
+ if (reqDTO.getTaskType() != null
+ && !reqDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
SnailJobLog.LOCAL.warn("非静态分片任务,不可使用该方法添加相关任务参数,请使用addArgsStr");
return this;
}
- requestUpdateJobDTO.setArgsStr(JsonUtil.toJsonString(shardingValue));
- requestUpdateJobDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType());
+ reqDTO.setArgsStr(JsonUtil.toJsonString(shardingValue));
+ reqDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType());
return this;
}
/**
* 修改路由
+ *
* @param algorithmEnum
* @return
*/
public RequestUpdateHandler setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
- requestUpdateJobDTO.setRouteKey(algorithmEnum.getType());
+ reqDTO.setRouteKey(algorithmEnum.getType());
return this;
}
/**
* 修改相关执行器
+ *
* @param executorInfo
* @return
*/
public RequestUpdateHandler setExecutorInfo(String executorInfo) {
- requestUpdateJobDTO.setExecutorInfo(executorInfo);
+ reqDTO.setExecutorInfo(executorInfo);
return this;
}
/**
* 修改调度类型
+ *
* @param triggerType
* @return
*/
public RequestUpdateHandler setTriggerType(TriggerTypeEnum triggerType) {
- requestUpdateJobDTO.setTriggerType(triggerType.getType());
+ reqDTO.setTriggerType(triggerType.getType());
return this;
}
@@ -178,71 +205,78 @@ public class RequestUpdateHandler extends AbstractRequestHandler {
* 修改调度时间
* 单位:秒
* 工作流无需配置
+ *
* @param triggerInterval
* @return
*/
public RequestUpdateHandler setTriggerInterval(String triggerInterval) {
- requestUpdateJobDTO.setTriggerInterval(triggerInterval);
+ reqDTO.setTriggerInterval(triggerInterval);
return this;
}
/**
* 修改阻塞策略
+ *
* @param blockStrategy
* @return
*/
public RequestUpdateHandler setBlockStrategy(BlockStrategyEnum blockStrategy) {
- requestUpdateJobDTO.setBlockStrategy(blockStrategy.getBlockStrategy());
+ reqDTO.setBlockStrategy(blockStrategy.getBlockStrategy());
return this;
}
/**
* 修改执行器超时时间
+ *
* @param executorTimeout
* @return
*/
public RequestUpdateHandler setExecutorTimeout(Integer executorTimeout) {
- requestUpdateJobDTO.setExecutorTimeout(executorTimeout);
+ reqDTO.setExecutorTimeout(executorTimeout);
return this;
}
/**
* 修改任务最大重试次数
+ *
* @param maxRetryTimes
* @return
*/
public RequestUpdateHandler setMaxRetryTimes(Integer maxRetryTimes) {
- requestUpdateJobDTO.setMaxRetryTimes(maxRetryTimes);
+ reqDTO.setMaxRetryTimes(maxRetryTimes);
return this;
}
/**
* 修改重试间隔
+ *
* @param retryInterval
* @return
*/
public RequestUpdateHandler setRetryInterval(Integer retryInterval) {
- requestUpdateJobDTO.setRetryInterval(retryInterval);
+ reqDTO.setRetryInterval(retryInterval);
return this;
}
/**
* 修改并发数量
+ *
* @param parallelNum
* @return
*/
public RequestUpdateHandler setParallelNum(Integer parallelNum) {
- requestUpdateJobDTO.setParallelNum(parallelNum);
+ reqDTO.setParallelNum(parallelNum);
return this;
}
/**
* 修改定时任务描述
+ *
* @param description
* @return
*/
public RequestUpdateHandler setDescription(String description) {
- requestUpdateJobDTO.setDescription(description);
+ reqDTO.setDescription(description);
return this;
}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateStatusHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateStatusHandler.java
similarity index 69%
rename from snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateStatusHandler.java
rename to snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateStatusHandler.java
index 68958e5c7..7f821281e 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/RequestUpdateStatusHandler.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/update/RequestUpdateStatusHandler.java
@@ -1,13 +1,15 @@
-package com.aizuda.snailjob.client.job.core.handler;
+package com.aizuda.snailjob.client.job.core.handler.update;
+import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
import com.aizuda.snailjob.client.job.core.dto.RequestUpdateStatusDTO;
import com.aizuda.snailjob.client.job.core.enums.JobTypeEnum;
+import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
import com.aizuda.snailjob.client.job.core.util.ValidatorUtils;
import com.aizuda.snailjob.common.core.enums.StatusEnum;
-public class RequestUpdateStatusHandler extends AbstractRequestHandler{
+public class RequestUpdateStatusHandler extends AbstractRequestHandler {
private final RequestUpdateStatusDTO statusDTO;
// 1: job; 2: workflow
private final int type;
@@ -18,38 +20,50 @@ public class RequestUpdateStatusHandler extends AbstractRequestHandler{
setId(id);
}
+ @Override
+ protected void afterExecute(Boolean aBoolean) {
+
+ }
+
+ @Override
+ protected void beforeExecute() {
+
+ }
+
@Override
protected Boolean doExecute() {
- if (type == JobTypeEnum.JOB.getType()){
+ if (type == JobTypeEnum.JOB.getType()) {
return (Boolean) client.updateJobStatus(statusDTO).getData();
}
- if (type == JobTypeEnum.WORKFLOW.getType()){
+ if (type == JobTypeEnum.WORKFLOW.getType()) {
return (Boolean) client.updateWorkFlowStatus(statusDTO).getData();
}
throw new SnailJobClientException("snail job openapi check error");
}
@Override
- protected boolean checkRequest() {
- return ValidatorUtils.validateEntity(statusDTO);
+ protected Pair checkRequest() {
+ return ValidatorUtils.validateEntity(statusDTO);
}
/**
* 设置任务/工作流ID
+ *
* @param id
* @return
*/
- private RequestUpdateStatusHandler setId(Long id){
+ private RequestUpdateStatusHandler setId(Long id) {
this.statusDTO.setId(id);
return this;
}
/**
* 设置状态
+ *
* @param status
* @return
*/
- public RequestUpdateStatusHandler setStatus(StatusEnum status){
+ public RequestUpdateStatusHandler setStatus(StatusEnum status) {
this.statusDTO.setJobStatus(status.getStatus());
return this;
}
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/SnailJobOpenApi.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/SnailJobOpenApi.java
index 1f6c3f4e4..811cb1d84 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/SnailJobOpenApi.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/SnailJobOpenApi.java
@@ -1,7 +1,11 @@
package com.aizuda.snailjob.client.job.core.openapi;
import com.aizuda.snailjob.client.job.core.enums.JobTypeEnum;
-import com.aizuda.snailjob.client.job.core.handler.*;
+import com.aizuda.snailjob.client.job.core.handler.add.*;
+import com.aizuda.snailjob.client.job.core.handler.quert.RequestQueryHandler;
+import com.aizuda.snailjob.client.job.core.handler.trigger.RequestTriggerJobHandler;
+import com.aizuda.snailjob.client.job.core.handler.update.RequestUpdateHandler;
+import com.aizuda.snailjob.client.job.core.handler.update.RequestUpdateStatusHandler;
import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
/**
@@ -16,54 +20,54 @@ public final class SnailJobOpenApi {
/**
* 添加集群定时任务
*
- * @return
+ * @return {@link ClusterAddHandler}
*/
- public static RequestAddHandler addClusterJob() {
- return new RequestAddHandler(JobTaskTypeEnum.CLUSTER, null);
+ public static ClusterAddHandler addClusterJob() {
+ return new ClusterAddHandler(JobTaskTypeEnum.CLUSTER);
}
/**
* 添加广播定时任务
*
- * @return
+ * @return {@link BroadcastAddHandler}
*/
- public static RequestAddHandler addBroadcastJob() {
- return new RequestAddHandler(JobTaskTypeEnum.BROADCAST, null);
+ public static BroadcastAddHandler addBroadcastJob() {
+ return new BroadcastAddHandler();
}
/**
* 添加固定分片定时任务
*
- * @return
+ * @return {@link ShardingAddHandler}
*/
- public static RequestAddHandler addShardingJob() {
- return new RequestAddHandler(JobTaskTypeEnum.SHARDING, null);
+ public static ShardingAddHandler addShardingJob() {
+ return new ShardingAddHandler();
}
/**
* 添加Map定时任务
*
- * @return
+ * @return {@link MapAddHandler}
*/
- public static RequestAddHandler addMapJob() {
- return new RequestAddHandler(JobTaskTypeEnum.MAP, null);
+ public static MapAddHandler addMapJob() {
+ return new MapAddHandler();
}
/**
* 添加MapReduce定时任务
*
* @param shardNum Reduce数量
- * @return
+ * @return {@link MapReduceAddHandler}
*/
- public static RequestAddHandler addMapReduceJob(Integer shardNum) {
- return new RequestAddHandler(JobTaskTypeEnum.MAP_REDUCE, shardNum);
+ public static MapReduceAddHandler addMapReduceJob(Integer shardNum) {
+ return new MapReduceAddHandler(shardNum);
}
/**
* 更新定时任务
*
* @param jobId 定时任务ID
- * @return
+ * @return {@link RequestUpdateHandler}
*/
public static RequestUpdateHandler updateJob(Long jobId) {
return new RequestUpdateHandler(jobId);
@@ -73,7 +77,7 @@ public final class SnailJobOpenApi {
* 获取定时任务详情
*
* @param jobId 定时任务ID
- * @return
+ * @return {@link RequestQueryHandler}
*/
public static RequestQueryHandler getJobDetail(Long jobId) {
return new RequestQueryHandler(jobId);
@@ -83,7 +87,7 @@ public final class SnailJobOpenApi {
* 手动触发定时任务
*
* @param jobId 定时任务ID
- * @return
+ * @return {@link RequestTriggerJobHandler}
*/
public static RequestTriggerJobHandler triggerJob(Long jobId) {
return new RequestTriggerJobHandler(jobId, JobTypeEnum.JOB.getType());
@@ -93,7 +97,7 @@ public final class SnailJobOpenApi {
* 手动触发工作流任务
*
* @param id 工作流任务ID
- * @return
+ * @return {@link RequestTriggerJobHandler}
*/
public static RequestTriggerJobHandler triggerWorkFlow(Long id) {
return new RequestTriggerJobHandler(id, JobTypeEnum.WORKFLOW.getType());
@@ -103,7 +107,7 @@ public final class SnailJobOpenApi {
* 更新定时任务状态
*
* @param jobId 任务ID
- * @return
+ * @return {@link RequestUpdateStatusHandler}
*/
public static RequestUpdateStatusHandler updateJobStatus(Long jobId) {
return new RequestUpdateStatusHandler(jobId, JobTypeEnum.JOB.getType());
@@ -113,7 +117,7 @@ public final class SnailJobOpenApi {
* 更新工作流任务状态
*
* @param workFlowId 工作流ID
- * @return
+ * @return {@link RequestUpdateStatusHandler}
*/
public static RequestUpdateStatusHandler updateWorkFlowStatus(Long workFlowId) {
return new RequestUpdateStatusHandler(workFlowId, JobTypeEnum.WORKFLOW.getType());
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/util/ValidatorUtils.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/util/ValidatorUtils.java
index abdd994df..7c1a7fa1e 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/util/ValidatorUtils.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/util/ValidatorUtils.java
@@ -1,7 +1,7 @@
package com.aizuda.snailjob.client.job.core.util;
+import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
-import com.aizuda.snailjob.common.log.SnailJobLog;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
@@ -9,7 +9,7 @@ import jakarta.validation.Validator;
import java.util.Set;
public class ValidatorUtils {
- private static Validator validator;
+ private static final Validator validator;
static {
validator = Validation.buildDefaultValidatorFactory().getValidator();
@@ -17,21 +17,20 @@ public class ValidatorUtils {
/**
* 校验对象
- * @param object 待校验对象
- * @throws SnailJobClientException 校验不通过,则报SnailJobClientException异常
+ *
+ * @param object 待校验对象
+ * @throws SnailJobClientException 校验不通过,则报SnailJobClientException异常
*/
- public static boolean validateEntity(Object object)
- throws SnailJobClientException {
+ public static Pair validateEntity(Object object) {
Set> constraintViolations = validator.validate(object);
if (!constraintViolations.isEmpty()) {
StringBuilder msg = new StringBuilder();
- for(ConstraintViolation