feat(sj_1.3.0-beta1): 手动执行任务/工作流支持传入临时参数

This commit is contained in:
srzou 2024-12-17 19:50:41 +08:00
parent bfb8487e4b
commit cac542ee2f
13 changed files with 48 additions and 10 deletions

View File

@ -70,5 +70,8 @@ public class JobTaskPrepareDTO {
*/
private Long parentWorkflowNodeId;
/**
* 临时任务参数
*/
private String tmpArgsStr;
}

View File

@ -22,4 +22,9 @@ public class JobTimerTaskDTO {
* 执行策略 1auto 2manual 3workflow
*/
private Integer taskExecutorScene;
/**
* 临时任务参数
*/
private String tmpArgsStr;
}

View File

@ -22,6 +22,11 @@ public class TaskExecuteDTO {
*/
private Integer taskExecutorScene;
/**
* 临时任务参数
*/
private String tmpArgsStr;
public TaskExecuteDTO() {
}

View File

@ -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));

View File

@ -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

View File

@ -63,5 +63,8 @@ public class JobTaskBatchGeneratorContext {
*/
private String wfContext;
/**
* 临时任务参数
*/
private String tmpArgsStr;
}

View File

@ -34,6 +34,7 @@ public class JobTimerTask implements TimerTask<String> {
taskExecuteDTO.setTaskExecutorScene(jobTimerTaskDTO.getTaskExecutorScene());
taskExecuteDTO.setWorkflowTaskBatchId(jobTimerTaskDTO.getWorkflowTaskBatchId());
taskExecuteDTO.setWorkflowNodeId(jobTimerTaskDTO.getWorkflowNodeId());
taskExecuteDTO.setTmpArgsStr(jobTimerTaskDTO.getTmpArgsStr());
ActorRef actorRef = ActorGenerator.jobTaskExecutorActor();
actorRef.tell(taskExecuteDTO, actorRef);

View File

@ -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)

View File

@ -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")

View File

@ -32,7 +32,7 @@ public interface JobService {
List<JobResponseVO> getJobNameList(String keywords, Long jobId, String groupName);
boolean trigger(Long jobId);
boolean trigger(Long jobId, String tmpArgsStr);
List<JobResponseVO> getJobList(String groupName);

View File

@ -33,7 +33,7 @@ public interface WorkflowService {
Boolean updateStatus(Long id);
Boolean trigger(Long id);
Boolean trigger(Long id, String tmpWfContext);
List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId, String groupName);

View File

@ -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);

View File

@ -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;