From cac542ee2fd5362a512600845e548fe61889a71b Mon Sep 17 00:00:00 2001 From: srzou Date: Tue, 17 Dec 2024 19:50:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.3.0-beta1):=20=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BB=BB=E5=8A=A1/=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E6=94=AF=E6=8C=81=E4=BC=A0=E5=85=A5=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/job/task/dto/JobTaskPrepareDTO.java | 5 ++++- .../snailjob/server/job/task/dto/JobTimerTaskDTO.java | 5 +++++ .../snailjob/server/job/task/dto/TaskExecuteDTO.java | 5 +++++ .../job/task/support/dispatch/JobExecutorActor.java | 3 +++ .../support/generator/batch/JobTaskBatchGenerator.java | 1 + .../generator/batch/JobTaskBatchGeneratorContext.java | 5 ++++- .../server/job/task/support/timer/JobTimerTask.java | 1 + .../snailjob/server/web/controller/JobController.java | 10 +++++++++- .../server/web/controller/WorkflowController.java | 9 ++++++++- .../aizuda/snailjob/server/web/service/JobService.java | 2 +- .../snailjob/server/web/service/WorkflowService.java | 2 +- .../server/web/service/impl/JobServiceImpl.java | 4 ++-- .../server/web/service/impl/WorkflowServiceImpl.java | 6 ++++-- 13 files changed, 48 insertions(+), 10 deletions(-) diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTaskPrepareDTO.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTaskPrepareDTO.java index 57b304dee..9284d129e 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTaskPrepareDTO.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTaskPrepareDTO.java @@ -70,5 +70,8 @@ public class JobTaskPrepareDTO { */ private Long parentWorkflowNodeId; - + /** + * 临时任务参数 + */ + private String tmpArgsStr; } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTimerTaskDTO.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTimerTaskDTO.java index 216eacc84..b431b7d77 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTimerTaskDTO.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/JobTimerTaskDTO.java @@ -22,4 +22,9 @@ public class JobTimerTaskDTO { * 执行策略 1、auto 2、manual 3、workflow */ private Integer taskExecutorScene; + + /** + * 临时任务参数 + */ + private String tmpArgsStr; } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/TaskExecuteDTO.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/TaskExecuteDTO.java index 8bc24b85f..4714cee0f 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/TaskExecuteDTO.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/dto/TaskExecuteDTO.java @@ -22,6 +22,11 @@ public class TaskExecuteDTO { */ private Integer taskExecutorScene; + /** + * 临时任务参数 + */ + private String tmpArgsStr; + public TaskExecuteDTO() { } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java index c85bcf1fd..2a5157c98 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java @@ -151,6 +151,9 @@ public class JobExecutorActor extends AbstractActor { JobTaskGenerator taskInstance = JobTaskGeneratorFactory.getTaskInstance(job.getTaskType()); JobTaskGenerateContext instanceGenerateContext = JobTaskConverter.INSTANCE.toJobTaskInstanceGenerateContext(job); instanceGenerateContext.setTaskBatchId(taskExecute.getTaskBatchId()); + if (Objects.nonNull(taskExecute.getTmpArgsStr())){ + instanceGenerateContext.setArgsStr(taskExecute.getTmpArgsStr()); + } if (Lists.newArrayList(MAP_REDUCE.getType(), MAP.getType()).contains(job.getTaskType())) { instanceGenerateContext.setTaskName(SystemConstants.ROOT_MAP); instanceGenerateContext.setMapSubTask(Lists.newArrayList(StrUtil.EMPTY)); diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGenerator.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGenerator.java index 776250129..b6200ee8e 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGenerator.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGenerator.java @@ -112,6 +112,7 @@ public class JobTaskBatchGenerator { jobTimerTaskDTO.setTaskExecutorScene(context.getTaskExecutorScene()); jobTimerTaskDTO.setWorkflowTaskBatchId(context.getWorkflowTaskBatchId()); jobTimerTaskDTO.setWorkflowNodeId(context.getWorkflowNodeId()); + jobTimerTaskDTO.setTmpArgsStr(context.getTmpArgsStr()); if (TransactionSynchronizationManager.isActualTransactionActive()) { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { @Override diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java index 099b36bf3..b0b6006b0 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/batch/JobTaskBatchGeneratorContext.java @@ -63,5 +63,8 @@ public class JobTaskBatchGeneratorContext { */ private String wfContext; - + /** + * 临时任务参数 + */ + private String tmpArgsStr; } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimerTask.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimerTask.java index fd5b8b680..661f28dd8 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimerTask.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimerTask.java @@ -34,6 +34,7 @@ public class JobTimerTask implements TimerTask { taskExecuteDTO.setTaskExecutorScene(jobTimerTaskDTO.getTaskExecutorScene()); taskExecuteDTO.setWorkflowTaskBatchId(jobTimerTaskDTO.getWorkflowTaskBatchId()); taskExecuteDTO.setWorkflowNodeId(jobTimerTaskDTO.getWorkflowNodeId()); + taskExecuteDTO.setTmpArgsStr(jobTimerTaskDTO.getTmpArgsStr()); ActorRef actorRef = ActorGenerator.jobTaskExecutorActor(); actorRef.tell(taskExecuteDTO, actorRef); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java index b5914e523..0206f35ad 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java @@ -94,10 +94,18 @@ public class JobController { return jobService.getJobNameList(keywords, jobId, groupName); } + @PostMapping("/trigger") + @LoginRequired + public Boolean trigger(@RequestParam(value = "jobId") Long jobId, + @RequestParam(value = "tmpArgsStr", required = false) String tmpArgsStr) { + return jobService.trigger(jobId, tmpArgsStr); + } + + @PostMapping("/trigger/{jobId}") @LoginRequired public Boolean trigger(@PathVariable("jobId") Long jobId) { - return jobService.trigger(jobId); + return jobService.trigger(jobId, null); } @PostMapping(value = "/import", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java index 9a3296032..566fedef7 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java @@ -77,7 +77,14 @@ public class WorkflowController { @PostMapping("/trigger/{id}") @LoginRequired(role = RoleEnum.USER) public Boolean trigger(@PathVariable("id") Long id) { - return workflowService.trigger(id); + return workflowService.trigger(id,null); + } + + @PostMapping("/trigger") + @LoginRequired(role = RoleEnum.USER) + public Boolean trigger(@RequestParam(value = "id") Long id, + @RequestParam(value = "tmpWfContext", required = false) String tmpWfContext) { + return workflowService.trigger(id, tmpWfContext); } @GetMapping("/workflow-name/list") diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java index c6b4fc740..cbc1056b8 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java @@ -32,7 +32,7 @@ public interface JobService { List getJobNameList(String keywords, Long jobId, String groupName); - boolean trigger(Long jobId); + boolean trigger(Long jobId, String tmpArgsStr); List getJobList(String groupName); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java index 4c5e2cd0e..b36078596 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java @@ -33,7 +33,7 @@ public interface WorkflowService { Boolean updateStatus(Long id); - Boolean trigger(Long id); + Boolean trigger(Long id, String tmpWfContext); List getWorkflowNameList(String keywords, Long workflowId, String groupName); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java index f771e6d8d..621fd67cd 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java @@ -215,8 +215,7 @@ public class JobServiceImpl implements JobService { @Override - public boolean trigger(Long jobId) { - + public boolean trigger(Long jobId, String tmpArgsStr) { Job job = jobMapper.selectById(jobId); Assert.notNull(job, () -> new SnailJobServerException("job can not be null.")); @@ -232,6 +231,7 @@ public class JobServiceImpl implements JobService { // 设置now表示立即执行 jobTaskPrepare.setNextTriggerAt(DateUtils.toNowMilli()); jobTaskPrepare.setTaskExecutorScene(JobTaskExecutorSceneEnum.MANUAL_JOB.getType()); + jobTaskPrepare.setTmpArgsStr(tmpArgsStr); // 创建批次 terminalJobPrepareHandler.handle(jobTaskPrepare); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java index 4b4f44f14..1d1e0d721 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java @@ -257,7 +257,7 @@ public class WorkflowServiceImpl implements WorkflowService { } @Override - public Boolean trigger(Long id) { + public Boolean trigger(Long id, String tmpWfContext) { Workflow workflow = workflowMapper.selectById(id); Assert.notNull(workflow, () -> new SnailJobServerException("workflow can not be null.")); @@ -275,7 +275,9 @@ public class WorkflowServiceImpl implements WorkflowService { // 设置now表示立即执行 prepareDTO.setNextTriggerAt(DateUtils.toNowMilli()); prepareDTO.setTaskExecutorScene(JobTaskExecutorSceneEnum.MANUAL_WORKFLOW.getType()); - + if (Objects.nonNull(tmpWfContext)){ + prepareDTO.setWfContext(tmpWfContext); + } terminalWorkflowPrepareHandler.handler(prepareDTO); return Boolean.TRUE;