From 71aecc4cd39a1aa6d2016c637f8642b270edaa56 Mon Sep 17 00:00:00 2001 From: srzou Date: Mon, 13 Jan 2025 15:54:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.4.0-beta1):=20sdk=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E8=B0=83=E7=94=A8=E6=97=B6=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=BC=A0=E9=80=92=E4=B8=B4=E6=97=B6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../client/job/core/dto/JobTriggerDTO.java | 17 ++++++ .../core/handler/AbstractTriggerHandler.java | 56 +++++++++++++++++++ .../trigger/BroadcastTriggerHandler.java | 14 +++++ .../trigger/ClusterTriggerHandler.java | 14 +++++ .../trigger/MapReduceTriggerHandler.java | 14 +++++ .../handler/trigger/MapTriggerHandler.java | 14 +++++ .../trigger/ShardingTriggerHandler.java | 14 +++++ .../handler/trigger/TriggerJobHandler.java | 12 ++-- .../trigger/TriggerWorkflowHandler.java | 18 ++++-- .../job/core/openapi/OpenApiClient.java | 5 +- .../job/core/openapi/SnailJobOpenApi.java | 54 ++++++++++++++++-- .../server/common/dto/JobTriggerDTO.java | 17 ++++++ .../OpenApiTriggerJobRequestHandler.java | 18 +++--- .../OpenApiTriggerWorkFlowRequestHandler.java | 20 ++++--- 15 files changed, 252 insertions(+), 37 deletions(-) create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/dto/JobTriggerDTO.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractTriggerHandler.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/BroadcastTriggerHandler.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ClusterTriggerHandler.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapReduceTriggerHandler.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapTriggerHandler.java create mode 100644 snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ShardingTriggerHandler.java create mode 100644 snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/JobTriggerDTO.java diff --git a/pom.xml b/pom.xml index 697f6c601..46ea1097e 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 17 17 17 - 1.3.0 + 1.4.0-beta1 4.1.114.Final 5.8.32 3.5.9 diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/dto/JobTriggerDTO.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/dto/JobTriggerDTO.java new file mode 100644 index 000000000..e07b08d4a --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/dto/JobTriggerDTO.java @@ -0,0 +1,17 @@ +package com.aizuda.snailjob.client.job.core.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +@Data +public class JobTriggerDTO { + + @NotNull(message = "jobId 不能为空") + private Long jobId; + + /** + * 临时任务参数 + */ + private String tmpArgsStr; +} diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractTriggerHandler.java new file mode 100644 index 000000000..06b734749 --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/AbstractTriggerHandler.java @@ -0,0 +1,56 @@ +package com.aizuda.snailjob.client.job.core.handler; + +import cn.hutool.core.util.StrUtil; +import com.aizuda.snailjob.client.job.core.dto.JobTriggerDTO; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +public abstract class AbstractTriggerHandler extends AbstractRequestHandler { + @Getter + private final JobTriggerDTO reqDTO; + @Setter + private H r; + + public AbstractTriggerHandler(Long jobId) { + this.reqDTO = new JobTriggerDTO(); + // 设置调度id + reqDTO.setJobId(jobId); + } + + + /** + * 添加参数,可支持多次添加 + * 静态分片不可使用该方法 + * + * @param argsKey 参数名 + * @param argsValue 参数值 + * @return + */ + protected H addArgsStr(String argsKey, Object argsValue) { + Map map = new HashMap<>(); + if (StrUtil.isNotBlank(reqDTO.getTmpArgsStr())) { + map = JsonUtil.parseHashMap(reqDTO.getTmpArgsStr()); + } + map.put(argsKey, argsValue); + reqDTO.setTmpArgsStr(JsonUtil.toJsonString(map)); + return r; + } + + /** + * 添加静态分片相关参数 + * + * @param shardingValue 分片参数 + * @return r + */ + protected H addShardingArgs(String... shardingValue) { + reqDTO.setTmpArgsStr(JsonUtil.toJsonString(shardingValue)); + return r; + } + + protected abstract void afterExecute(Boolean aBoolean); +} diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/BroadcastTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/BroadcastTriggerHandler.java new file mode 100644 index 000000000..5b9ddbfbd --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/BroadcastTriggerHandler.java @@ -0,0 +1,14 @@ +package com.aizuda.snailjob.client.job.core.handler.trigger; + + +public class BroadcastTriggerHandler extends TriggerJobHandler{ + + public BroadcastTriggerHandler(Long triggerJobId) { + super(triggerJobId); + } + + @Override + public BroadcastTriggerHandler 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/trigger/ClusterTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ClusterTriggerHandler.java new file mode 100644 index 000000000..dbcfbe564 --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ClusterTriggerHandler.java @@ -0,0 +1,14 @@ +package com.aizuda.snailjob.client.job.core.handler.trigger; + + +public class ClusterTriggerHandler extends TriggerJobHandler{ + + public ClusterTriggerHandler(Long triggerJobId) { + super(triggerJobId); + } + + @Override + public ClusterTriggerHandler 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/trigger/MapReduceTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapReduceTriggerHandler.java new file mode 100644 index 000000000..8cd58abbb --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapReduceTriggerHandler.java @@ -0,0 +1,14 @@ +package com.aizuda.snailjob.client.job.core.handler.trigger; + + +public class MapReduceTriggerHandler extends TriggerJobHandler{ + + public MapReduceTriggerHandler(Long triggerJobId) { + super(triggerJobId); + } + + @Override + public MapReduceTriggerHandler 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/trigger/MapTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapTriggerHandler.java new file mode 100644 index 000000000..8cbcdbca5 --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/MapTriggerHandler.java @@ -0,0 +1,14 @@ +package com.aizuda.snailjob.client.job.core.handler.trigger; + + +public class MapTriggerHandler extends TriggerJobHandler{ + + public MapTriggerHandler(Long triggerJobId) { + super(triggerJobId); + } + + @Override + public MapTriggerHandler 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/trigger/ShardingTriggerHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ShardingTriggerHandler.java new file mode 100644 index 000000000..c3ceb0d71 --- /dev/null +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/ShardingTriggerHandler.java @@ -0,0 +1,14 @@ +package com.aizuda.snailjob.client.job.core.handler.trigger; + + +public class ShardingTriggerHandler extends TriggerJobHandler{ + + public ShardingTriggerHandler(Long triggerJobId) { + super(triggerJobId); + } + + @Override + public ShardingTriggerHandler addShardingArgs(String... shardingValue) { + return super.addShardingArgs(shardingValue); + } +} diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerJobHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerJobHandler.java index 32b6ee58c..25d193380 100644 --- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerJobHandler.java +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerJobHandler.java @@ -3,16 +3,14 @@ package com.aizuda.snailjob.client.job.core.handler.trigger; 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.handler.AbstractRequestHandler; +import com.aizuda.snailjob.client.job.core.handler.AbstractTriggerHandler; import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.model.Result; -public class TriggerJobHandler extends AbstractRequestHandler { - private final Long triggerJobId; - +public abstract class TriggerJobHandler extends AbstractTriggerHandler { public TriggerJobHandler(Long triggerJobId) { - this.triggerJobId = triggerJobId; + super(triggerJobId); } @Override @@ -27,7 +25,7 @@ public class TriggerJobHandler extends AbstractRequestHandler { @Override protected Boolean doExecute() { - Result result = client.triggerJob(triggerJobId); + Result result = client.triggerJob(getReqDTO()); Assert.isTrue(StatusEnum.YES.getStatus() == result.getStatus(), () -> new SnailJobClientException(result.getMessage())); return (Boolean)result.getData(); @@ -35,6 +33,6 @@ public class TriggerJobHandler extends AbstractRequestHandler { @Override protected Pair checkRequest() { - return Pair.of(triggerJobId != null && !Long.valueOf(0).equals(triggerJobId), "triggerJobId不能为null并且必须大于0"); + return Pair.of(getReqDTO().getJobId() != null && !Long.valueOf(0).equals(getReqDTO().getJobId()), "triggerJobId不能为null并且必须大于0"); } } diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerWorkflowHandler.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerWorkflowHandler.java index 8eb341fde..35c2f2055 100644 --- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerWorkflowHandler.java +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/handler/trigger/TriggerWorkflowHandler.java @@ -3,15 +3,16 @@ package com.aizuda.snailjob.client.job.core.handler.trigger; 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.handler.AbstractRequestHandler; +import com.aizuda.snailjob.client.job.core.handler.AbstractTriggerHandler; import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.model.Result; -public class TriggerWorkflowHandler extends AbstractRequestHandler { - private final Long triggerJobId; +public class TriggerWorkflowHandler extends AbstractTriggerHandler { + public TriggerWorkflowHandler(Long triggerJobId) { - this.triggerJobId = triggerJobId; + super(triggerJobId); + setR(this); } @Override @@ -26,7 +27,7 @@ public class TriggerWorkflowHandler extends AbstractRequestHandler { @Override protected Boolean doExecute() { - Result result = client.triggerWorkFlow(triggerJobId); + Result result = client.triggerWorkFlow(getReqDTO()); Assert.isTrue(StatusEnum.YES.getStatus() == result.getStatus(), () -> new SnailJobClientException(result.getMessage())); return (Boolean) result.getData(); @@ -34,6 +35,11 @@ public class TriggerWorkflowHandler extends AbstractRequestHandler { @Override protected Pair checkRequest() { - return Pair.of(triggerJobId != null && !Long.valueOf(0).equals(triggerJobId), "triggerJobId不能为null并且必须大于0"); + return Pair.of(getReqDTO().getJobId() != null && !Long.valueOf(0).equals(getReqDTO().getJobId()), "triggerJobId不能为null并且必须大于0"); + } + + @Override + public TriggerWorkflowHandler 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/openapi/OpenApiClient.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/OpenApiClient.java index b1922875e..a80996f5d 100644 --- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/OpenApiClient.java +++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/openapi/OpenApiClient.java @@ -2,6 +2,7 @@ package com.aizuda.snailjob.client.job.core.openapi; import com.aizuda.snailjob.client.common.annotation.Mapping; import com.aizuda.snailjob.client.common.rpc.client.RequestMethod; +import com.aizuda.snailjob.client.job.core.dto.JobTriggerDTO; import com.aizuda.snailjob.client.job.core.dto.RequestAddOrUpdateJobDTO; import com.aizuda.snailjob.client.job.core.dto.RequestUpdateStatusDTO; import com.aizuda.snailjob.common.core.model.Result; @@ -19,10 +20,10 @@ public interface OpenApiClient { Result getJobDetail(Long jobId); @Mapping(method = RequestMethod.POST, path = "/api/job/triggerJob") - Result triggerJob(Long triggerId); + Result triggerJob(JobTriggerDTO jobTriggerDTO); @Mapping(method = RequestMethod.POST, path = "/api/job/triggerWorkFlow") - Result triggerWorkFlow(Long triggerId); + Result triggerWorkFlow(JobTriggerDTO jobTriggerDTO); @Mapping(method = RequestMethod.POST, path = "/api/job/updateJobStatus") Result updateJobStatus(RequestUpdateStatusDTO statusDTO); 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 b8dbf06f4..2cdab0ca4 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 @@ -4,8 +4,7 @@ import com.aizuda.snailjob.client.job.core.handler.add.*; import com.aizuda.snailjob.client.job.core.handler.delete.DeleteJobHandler; import com.aizuda.snailjob.client.job.core.handler.delete.DeleteWorkflowHandler; import com.aizuda.snailjob.client.job.core.handler.query.RequestQueryHandler; -import com.aizuda.snailjob.client.job.core.handler.trigger.TriggerJobHandler; -import com.aizuda.snailjob.client.job.core.handler.trigger.TriggerWorkflowHandler; +import com.aizuda.snailjob.client.job.core.handler.trigger.*; import com.aizuda.snailjob.client.job.core.handler.update.*; import java.util.Set; @@ -125,15 +124,58 @@ public final class SnailJobOpenApi { } /** - * 手动触发定时任务 + * 手动触发广播定时任务 * * @param jobId 定时任务ID - * @return {@link TriggerJobHandler} + * @return {@link BroadcastTriggerHandler} */ - public static TriggerJobHandler triggerJob(Long jobId) { - return new TriggerJobHandler(jobId); + public static BroadcastTriggerHandler triggerBroadcastJob(Long jobId) { + return new BroadcastTriggerHandler(jobId); } + /** + * 手动触发集群定时任务 + * + * @param jobId 定时任务ID + * @return {@link ClusterTriggerHandler} + */ + public static ClusterTriggerHandler triggerClusterJob(Long jobId) { + return new ClusterTriggerHandler(jobId); + } + + /** + * 手动触发MapReduce定时任务 + * + * @param jobId 定时任务ID + * @return {@link MapReduceTriggerHandler} + */ + public static MapReduceTriggerHandler triggerMapReduceJob(Long jobId) { + return new MapReduceTriggerHandler(jobId); + } + + /** + * 手动触发Map定时任务 + * + * @param jobId 定时任务ID + * @return {@link MapTriggerHandler} + */ + public static MapTriggerHandler triggerMapJob(Long jobId) { + return new MapTriggerHandler(jobId); + } + + + /** + * 手动触发静态分片定时任务 + * + * @param jobId 定时任务ID + * @return {@link ShardingTriggerHandler} + */ + public static ShardingTriggerHandler triggerShardingJob(Long jobId) { + return new ShardingTriggerHandler(jobId); + } + + + /** * 手动触发工作流任务 * diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/JobTriggerDTO.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/JobTriggerDTO.java new file mode 100644 index 000000000..e36d2aba9 --- /dev/null +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/JobTriggerDTO.java @@ -0,0 +1,17 @@ +package com.aizuda.snailjob.server.common.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +@Data +public class JobTriggerDTO { + + @NotNull(message = "jobId 不能为空") + private Long jobId; + + /** + * 临时任务参数 + */ + private String tmpArgsStr; +} diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerJobRequestHandler.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerJobRequestHandler.java index f28a6eea3..5be27629d 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerJobRequestHandler.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerJobRequestHandler.java @@ -1,13 +1,17 @@ package com.aizuda.snailjob.server.job.task.support.request; +import cn.hutool.core.lang.Assert; import cn.hutool.core.net.url.UrlQuery; +import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.common.core.constant.SystemConstants.HTTP_PATH; import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.model.SnailJobRequest; import com.aizuda.snailjob.common.core.model.SnailJobRpcResult; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.server.common.dto.JobTriggerDTO; import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum; +import com.aizuda.snailjob.server.common.exception.SnailJobServerException; import com.aizuda.snailjob.server.common.handler.PostHttpRequestHandler; import com.aizuda.snailjob.server.common.util.DateUtils; import com.aizuda.snailjob.server.job.task.dto.JobTaskPrepareDTO; @@ -23,7 +27,6 @@ import io.netty.handler.codec.http.HttpMethod; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import java.util.Objects; /** * OPENAPI @@ -51,12 +54,9 @@ public class OpenApiTriggerJobRequestHandler extends PostHttpRequestHandler { SnailJobLog.LOCAL.debug("Trigger job content:[{}]", content); SnailJobRequest retryRequest = JsonUtil.parseObject(content, SnailJobRequest.class); Object[] args = retryRequest.getArgs(); - Long jobId = JsonUtil.parseObject(JsonUtil.toJsonString(args[0]), Long.class); - Job job = jobMapper.selectById(jobId); - if (Objects.isNull(job)){ - SnailJobLog.LOCAL.warn("job can not be null."); - return new SnailJobRpcResult(false, retryRequest.getReqId()); - } + JobTriggerDTO jobTriggerDTO = JsonUtil.parseObject(JsonUtil.toJsonString(args[0]), JobTriggerDTO.class); + Job job = jobMapper.selectById(jobTriggerDTO.getJobId()); + Assert.notNull(job, () -> new SnailJobServerException("job can not be null.")); long count = accessTemplate.getGroupConfigAccess().count(new LambdaQueryWrapper() .eq(GroupConfig::getGroupName, job.getGroupName()) @@ -72,6 +72,10 @@ public class OpenApiTriggerJobRequestHandler extends PostHttpRequestHandler { // 设置now表示立即执行 jobTaskPrepare.setNextTriggerAt(DateUtils.toNowMilli()); jobTaskPrepare.setTaskExecutorScene(JobTaskExecutorSceneEnum.MANUAL_JOB.getType()); + // 设置手动参数 + if (StrUtil.isNotBlank(jobTriggerDTO.getTmpArgsStr())) { + jobTaskPrepare.setTmpArgsStr(jobTriggerDTO.getTmpArgsStr()); + } // 创建批次 terminalJobPrepareHandler.handle(jobTaskPrepare); diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerWorkFlowRequestHandler.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerWorkFlowRequestHandler.java index 8aa163fd5..396a09ab9 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerWorkFlowRequestHandler.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/request/OpenApiTriggerWorkFlowRequestHandler.java @@ -1,6 +1,7 @@ package com.aizuda.snailjob.server.job.task.support.request; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.net.url.UrlQuery; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.common.core.constant.SystemConstants.HTTP_PATH; @@ -9,7 +10,9 @@ import com.aizuda.snailjob.common.core.model.SnailJobRequest; import com.aizuda.snailjob.common.core.model.SnailJobRpcResult; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.server.common.dto.JobTriggerDTO; import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum; +import com.aizuda.snailjob.server.common.exception.SnailJobServerException; import com.aizuda.snailjob.server.common.handler.PostHttpRequestHandler; import com.aizuda.snailjob.server.common.util.DateUtils; import com.aizuda.snailjob.server.job.task.dto.WorkflowTaskPrepareDTO; @@ -27,7 +30,6 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.HashSet; -import java.util.Objects; import java.util.Set; /** @@ -56,12 +58,10 @@ public class OpenApiTriggerWorkFlowRequestHandler extends PostHttpRequestHandler SnailJobLog.LOCAL.debug("Trigger job content:[{}]", content); SnailJobRequest retryRequest = JsonUtil.parseObject(content, SnailJobRequest.class); Object[] args = retryRequest.getArgs(); - Long id = JsonUtil.parseObject(JsonUtil.toJsonString(args[0]), Long.class); - Workflow workflow = workflowMapper.selectById(id); - if (Objects.isNull(workflow)){ - SnailJobLog.LOCAL.warn("workflow can not be null."); - return new SnailJobRpcResult(false, retryRequest.getReqId()); - } + JobTriggerDTO workflowDTO = JsonUtil.parseObject(JsonUtil.toJsonString(args[0]), JobTriggerDTO.class); + Workflow workflow = workflowMapper.selectById(workflowDTO.getJobId()); + Assert.notNull(workflow, () -> new SnailJobServerException("workflow can not be null.")); + // 将字符串反序列化为 Set if (StrUtil.isNotBlank(workflow.getGroupName())) { Set namesSet = new HashSet<>(Arrays.asList(workflow.getGroupName().split(", "))); @@ -88,7 +88,11 @@ public class OpenApiTriggerWorkFlowRequestHandler extends PostHttpRequestHandler // 设置now表示立即执行 prepareDTO.setNextTriggerAt(DateUtils.toNowMilli()); prepareDTO.setTaskExecutorScene(JobTaskExecutorSceneEnum.MANUAL_WORKFLOW.getType()); - +// 设置工作流上下文 + String tmpWfContext = workflowDTO.getTmpArgsStr(); + if (StrUtil.isNotBlank(tmpWfContext) && !JsonUtil.isEmptyJson(tmpWfContext)){ + prepareDTO.setWfContext(tmpWfContext); + } terminalWorkflowPrepareHandler.handler(prepareDTO); return new SnailJobRpcResult(true, retryRequest.getReqId());