feat(sj_1.3.0-beta1): 手动执行任务/工作流支持传入临时参数
This commit is contained in:
parent
bfb8487e4b
commit
cac542ee2f
@ -70,5 +70,8 @@ public class JobTaskPrepareDTO {
|
||||
*/
|
||||
private Long parentWorkflowNodeId;
|
||||
|
||||
|
||||
/**
|
||||
* 临时任务参数
|
||||
*/
|
||||
private String tmpArgsStr;
|
||||
}
|
||||
|
@ -22,4 +22,9 @@ public class JobTimerTaskDTO {
|
||||
* 执行策略 1、auto 2、manual 3、workflow
|
||||
*/
|
||||
private Integer taskExecutorScene;
|
||||
|
||||
/**
|
||||
* 临时任务参数
|
||||
*/
|
||||
private String tmpArgsStr;
|
||||
}
|
||||
|
@ -22,6 +22,11 @@ public class TaskExecuteDTO {
|
||||
*/
|
||||
private Integer taskExecutorScene;
|
||||
|
||||
/**
|
||||
* 临时任务参数
|
||||
*/
|
||||
private String tmpArgsStr;
|
||||
|
||||
public TaskExecuteDTO() {
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -63,5 +63,8 @@ public class JobTaskBatchGeneratorContext {
|
||||
*/
|
||||
private String wfContext;
|
||||
|
||||
|
||||
/**
|
||||
* 临时任务参数
|
||||
*/
|
||||
private String tmpArgsStr;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user