From b12747eebc85a317b468eb2772091b6acf452880 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 10 Aug 2017 00:43:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0job=E7=9A=84=E9=93=BE?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itkk/udf/scheduler/client/IExecutor.java | 25 ------ .../udf/scheduler/client/SchClientHandle.java | 25 +++--- .../scheduler/client/TriggerDataMapKey.java | 68 ++++++++++++++ .../udf/scheduler/client/TriggerType.java | 6 +- .../scheduler/client/domain/RmsJobParam.java | 24 +++++ .../scheduler/client/domain/RmsJobResult.java | 32 +------ .../client/executor/AbstractExecutor.java | 89 +++++++++++++++++++ .../client/service/SchClientService.java | 7 +- .../client/web/SchClientController.java | 9 +- .../org/itkk/udf/scheduler/IRmsJobLog.java | 5 +- .../org/itkk/udf/scheduler/job/RmsJob.java | 34 +++---- .../udf/scheduler/web/IJobController.java | 47 +++++----- .../itkk/udf/scheduler/web/JobController.java | 16 ++-- .../web/SchClientCallbackController.java | 2 +- 14 files changed, 258 insertions(+), 131 deletions(-) delete mode 100644 udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/IExecutor.java create mode 100644 udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java create mode 100644 udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/IExecutor.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/IExecutor.java deleted file mode 100644 index 5eae4df..0000000 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/IExecutor.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * IExecutor.java - * Created at 2017-06-11 - * Created by Administrator - * Copyright (C) 2016 itkk.org, All rights reserved. - */ -package org.itkk.udf.scheduler.client; - -import java.util.Map; - -/** - * 描述 : IExecutor - * - * @author Administrator - */ -public interface IExecutor { //NOSONAR - - /** - * 描述 : 执行方法 - * - * @param jobDataMap jobDataMap - */ - void handle(Map jobDataMap); - -} diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java index b5790d9..1c80257 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java @@ -6,11 +6,14 @@ */ package org.itkk.udf.scheduler.client; +import java.util.Date; + import org.apache.commons.lang3.exception.ExceptionUtils; import org.itkk.udf.core.RestResponse; import org.itkk.udf.rms.Rms; import org.itkk.udf.scheduler.client.domain.RmsJobParam; import org.itkk.udf.scheduler.client.domain.RmsJobResult; +import org.itkk.udf.scheduler.client.executor.AbstractExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -22,8 +25,6 @@ import org.springframework.retry.annotation.Retryable; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import java.util.Date; - /** * 描述 : SchClientService * @@ -50,20 +51,14 @@ public class SchClientHandle implements ApplicationContextAware { /** * 描述 : 异步执行 - * - * @param receiveTime 接收时间 - * @param param 参数 + * + * @param param 参数 + * @param result 结果 */ @Async - public void asyncHandle(Date receiveTime, RmsJobParam param) { - //定义返回值 - RmsJobResult result = new RmsJobResult(); - result.setParam(param); - result.setClientReceiveTime(receiveTime); - result.setId(param.getId()); - //执行(并且记录开始和结束时间) - result.setClientStartExecuteTime(new Date()); + public void asyncHandle(RmsJobParam param, RmsJobResult result) { try { + //执行 this.handle(param); result.setClientEndExecuteTime(new Date()); result.setStats(RmsJobStats.COMPLETE.value()); @@ -93,9 +88,9 @@ public class SchClientHandle implements ApplicationContextAware { throw new SchException(param.getBeanName() + " not definition"); } //获得bean - IExecutor bean = applicationContext.getBean(param.getBeanName(), IExecutor.class); + AbstractExecutor bean = applicationContext.getBean(param.getBeanName(), AbstractExecutor.class); //执行 - bean.handle(param.getJobDataMap()); + bean.handle(param); } /** diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java new file mode 100644 index 0000000..d2f4dd6 --- /dev/null +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java @@ -0,0 +1,68 @@ +/** + * TriggerDataMapKey.java + * Created at 2016-09-27 + * Created by wangkang + * Copyright (C) 2016 itkk.org, All rights reserved. + */ +package org.itkk.udf.scheduler.client; + +/** + * 描述 : TriggerDataMapKey + * + * @author wangkang + */ +public enum TriggerDataMapKey { + /** + * 描述 : 父触发ID + */ + PARENT_TRIGGER_ID("parentTriggerId"), + /** + * 描述 : 触发ID + */ + TRIGGER_ID("triggerId"), + /** + * 描述 : 触发类型 + */ + TRIGGER_TYPE("triggerType"), + /** + * 描述 : 服务代码 + */ + SERVICE_CODE("serviceCode"), + /** + * 描述 : bean名称 + */ + BEAN_NAME("beanName"), + /** + * 描述 : 是否异步 + */ + ASYNC("async"); + + /** + *

+ * Field value: 参数值 + *

+ */ + private String value = null; + + /** + *

+ * Description: 构造函数 + *

+ * + * @param value 构造函数 + */ + TriggerDataMapKey(String value) { + this.value = value; + } + + /** + *

+ * Description: 放回int值 + *

+ * + * @return value 放回int值 + */ + public String value() { + return this.value; + } +} diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java index 4150597..04d634a 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java @@ -19,7 +19,11 @@ public enum TriggerType { /** * 描述 : 触发器触发 */ - TRIGGER("trigger"); + TRIGGER("trigger"), + /** + * 描述 : 触发链 + */ + CALL_CHAIN("callChain"); /** *

diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java index d2cf488..44849bc 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java @@ -31,6 +31,12 @@ public class RmsJobParam implements Serializable { @ApiModelProperty(value = "主键ID", required = true, dataType = "string") private String id; + /** + * 父ID + */ + @ApiModelProperty(value = "父ID", required = false, dataType = "string") + private String parentId; + /** * 描述 : 触发实例ID */ @@ -61,6 +67,24 @@ public class RmsJobParam implements Serializable { @ApiModelProperty(value = "作业参数", required = true, dataType = "object") private Map jobDataMap; //NOSONAR + /** + * 描述 : 获取parentId + * + * @return the parentId + */ + public String getParentId() { + return parentId; + } + + /** + * 描述 : 设置parentId + * + * @param parentId the parentId to set + */ + public void setParentId(String parentId) { + this.parentId = parentId; + } + /** * 描述 : 获取triggerType * diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java index 12a59bd..0f12cc9 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java @@ -6,12 +6,12 @@ */ package org.itkk.udf.scheduler.client.domain; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - import java.io.Serializable; import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + /** * 描述 : RmsJobResult * @@ -31,12 +31,6 @@ public class RmsJobResult implements Serializable { @ApiModelProperty(value = "主键ID", required = true, dataType = "string") private String id; - /** - * 描述 : 参数 - */ - @ApiModelProperty(value = "参数", required = true, dataType = "object") - private RmsJobParam param; - /** * 描述 : 客户端接收时间 */ @@ -52,7 +46,7 @@ public class RmsJobResult implements Serializable { /** * 描述 : 客户端结束时间 */ - @ApiModelProperty(value = "客户端结束时间", required = true, dataType = "long") + @ApiModelProperty(value = "客户端结束时间", required = false, dataType = "long") private Date clientEndExecuteTime; /** @@ -67,24 +61,6 @@ public class RmsJobResult implements Serializable { @ApiModelProperty(value = "错误信息", required = true, dataType = "string") private String errorMsg; - /** - * 描述 : 获取param - * - * @return the param - */ - public RmsJobParam getParam() { - return param; - } - - /** - * 描述 : 设置param - * - * @param param the param to set - */ - public void setParam(RmsJobParam param) { - this.param = param; - } - /** * 描述 : 获取errorMsg * diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java new file mode 100644 index 0000000..c32330e --- /dev/null +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java @@ -0,0 +1,89 @@ +/** + * AbstractExecutor.java + * Created at 2017-08-09 + * Created by Administrator + * Copyright (C) 2016 egridcloud.com, All rights reserved. + */ +package org.itkk.udf.scheduler.client.executor; + +import java.util.HashMap; +import java.util.Map; + +import org.itkk.udf.scheduler.client.TriggerDataMapKey; +import org.itkk.udf.scheduler.client.TriggerType; +import org.itkk.udf.scheduler.client.domain.RmsJobParam; +import org.itkk.udf.scheduler.client.service.SchClientService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * 描述 : AbstractExecutor + * + * @author Administrator + * + */ +public abstract class AbstractExecutor { + + /** + * schClientService + */ + @Autowired + private SchClientService schClientService; + + /** + * 执行方法 描述 : 执行方法 + * + * @param param param + */ + public void handle(RmsJobParam param) { + this.handle(param.getId(), param.getJobDataMap()); + } + + /** + * + * 描述 : 调用链 (允许并发,异步调用) + * + * @param parentId 父ID + * @param serviceCode 服务代码 + * @param beanName bean名称 + * @param param 业务参数 + * @return 结果 + */ + protected String chain(String parentId, String serviceCode, String beanName, Map param) { + return this.chain(true, parentId, serviceCode, beanName, true, param); + } + + /** + * + * 描述 : 调用链 + * + * @param isConcurrent 是否并发(true:允许并发,false:禁止并发) + * @param parentId 父ID + * @param serviceCode 服务代码 + * @param beanName bean名称 + * @param async 是否异步 + * @param param 业务参数 + * @return 结果 + */ + protected String chain(boolean isConcurrent, String parentId, String serviceCode, String beanName, boolean async, Map param) { + //构建jobDataMap + Map jdm = new HashMap<>(); + jdm.put(TriggerDataMapKey.PARENT_TRIGGER_ID.value(), parentId); + jdm.put(TriggerDataMapKey.TRIGGER_TYPE.value(), TriggerType.CALL_CHAIN.value()); + jdm.put(TriggerDataMapKey.SERVICE_CODE.value(), serviceCode); + jdm.put(TriggerDataMapKey.BEAN_NAME.value(), beanName); + jdm.put(TriggerDataMapKey.ASYNC.value(), Boolean.toString(async)); + jdm.putAll(param); + // 调用 & 返回 + String jobCode = isConcurrent ? "rmsJob" : "rmsJobDisallowConcurrent"; + return this.schClientService.trigger(jobCode, jdm); + } + + /** + * 描述 : 执行方法 + * + * @param id id + * @param jobDataMap jobDataMap + */ + protected abstract void handle(String id, Map jobDataMap); + +} diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java index 8f4473b..101ce80 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java @@ -34,7 +34,7 @@ public class SchClientService { * 描述 : 触发作业 * * @param jobCode 作业代码 - * @param param 参数 + * @param param 参数 * @return id */ public String trigger(String jobCode, Map param) { @@ -44,9 +44,8 @@ public class SchClientService { Map uriVariables = new HashMap<>(); uriVariables.put("jobCode", jobCode); //请求 - ResponseEntity> result = - rms.call(serviceCode, param, null, new ParameterizedTypeReference>() { - }, uriVariables); + ResponseEntity> result = rms.call(serviceCode, param, null, new ParameterizedTypeReference>() { + }, uriVariables); //返回 return result.getBody().getResult(); } diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java index a2be412..bf12f01 100644 --- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java +++ b/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java @@ -6,6 +6,8 @@ */ package org.itkk.udf.scheduler.client.web; +import java.util.Date; + import org.itkk.udf.core.RestResponse; import org.itkk.udf.scheduler.client.RmsJobStats; import org.itkk.udf.scheduler.client.SchClientHandle; @@ -15,8 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import java.util.Date; - /** * 描述 : SchClientController * @@ -37,15 +37,14 @@ public class SchClientController implements ISchClientController { Date receiveTime = new Date(); //定义返回值 RmsJobResult result = new RmsJobResult(); - result.setParam(param); result.setClientReceiveTime(receiveTime); result.setId(param.getId()); + result.setClientStartExecuteTime(new Date()); //执行(区分同步跟异步) if (param.getAsync()) { - schClientHandle.asyncHandle(receiveTime, param); + schClientHandle.asyncHandle(param, result); result.setStats(RmsJobStats.EXECUTING.value()); } else { - result.setClientStartExecuteTime(new Date()); schClientHandle.handle(param); result.setClientEndExecuteTime(new Date()); result.setStats(RmsJobStats.COMPLETE.value()); diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobLog.java b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobLog.java index 33670b4..c5f6dc6 100644 --- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobLog.java +++ b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobLog.java @@ -6,6 +6,7 @@ */ package org.itkk.udf.scheduler; +import org.itkk.udf.scheduler.client.domain.RmsJobParam; import org.itkk.udf.scheduler.client.domain.RmsJobResult; /** @@ -16,11 +17,13 @@ import org.itkk.udf.scheduler.client.domain.RmsJobResult; public interface IRmsJobLog { /** + * * 描述 : save * + * @param param param * @param result result */ - void save(RmsJobResult result); + void save(RmsJobParam param, RmsJobResult result); /** * 描述 : delete diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java index 1f37df9..a7d2790 100644 --- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java +++ b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java @@ -6,6 +6,8 @@ */ package org.itkk.udf.scheduler.job; +import java.util.UUID; + import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -14,6 +16,7 @@ import org.itkk.udf.rms.Rms; import org.itkk.udf.scheduler.IRmsJobLog; import org.itkk.udf.scheduler.client.RmsJobStats; import org.itkk.udf.scheduler.client.SchException; +import org.itkk.udf.scheduler.client.TriggerDataMapKey; import org.itkk.udf.scheduler.client.TriggerType; import org.itkk.udf.scheduler.client.domain.RmsJobParam; import org.itkk.udf.scheduler.client.domain.RmsJobResult; @@ -26,8 +29,6 @@ import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import java.util.UUID; - /** * 描述 : RmsJob * @@ -45,16 +46,18 @@ public class RmsJob extends AbstractBaseJob { //从trigger中获得jobDataMap JobDataMap jobDataMap = jobExecutionContext.getTrigger().getJobDataMap(); //获得必要字段 - String triggerId = jobDataMap.getString("triggerId"); + String triggerId = jobDataMap.getString(TriggerDataMapKey.TRIGGER_ID.value()); triggerId = StringUtils.isBlank(triggerId) ? UUID.randomUUID().toString() : triggerId; - String triggerType = jobDataMap.getString("triggerType"); + String parentTriggerId = jobDataMap.getString(TriggerDataMapKey.PARENT_TRIGGER_ID.value()); + String triggerType = jobDataMap.getString(TriggerDataMapKey.TRIGGER_TYPE.value()); triggerType = StringUtils.isBlank(triggerType) ? TriggerType.TRIGGER.value() : triggerType; - String serviceCode = jobDataMap.getString("serviceCode"); - String beanName = jobDataMap.getString("beanName"); - Boolean async = jobDataMap.getBoolean("async"); + String serviceCode = jobDataMap.getString(TriggerDataMapKey.SERVICE_CODE.value()); + String beanName = jobDataMap.getString(TriggerDataMapKey.BEAN_NAME.value()); + Boolean async = jobDataMap.getBoolean(TriggerDataMapKey.ASYNC.value()); //封装请求参数 RmsJobParam rmsJobParam = new RmsJobParam(); rmsJobParam.setId(triggerId); + rmsJobParam.setParentId(parentTriggerId); rmsJobParam.setTriggerType(triggerType); rmsJobParam.setFireInstanceId(jobExecutionContext.getFireInstanceId()); rmsJobParam.setBeanName(beanName); @@ -71,25 +74,23 @@ public class RmsJob extends AbstractBaseJob { //获得RMS Rms rms = this.getApplicationContext().getBean(Rms.class); //请求 - ResponseEntity> result = rms.call(serviceCode, rmsJobParam, null, - new ParameterizedTypeReference>() { - }, null); + ResponseEntity> result = rms.call(serviceCode, rmsJobParam, null, new ParameterizedTypeReference>() { + }, null); //判断http状态 if (result.getStatusCode() != HttpStatus.OK) { //抛出异常 throw new SchException("http状态:" + result.getStatusCode().toString()); } //记录 - saveRmsJobResult(result.getBody().getResult()); + saveRmsJobLog(rmsJobParam, result.getBody().getResult()); } catch (Exception e) { //定义返回值 RmsJobResult result = new RmsJobResult(); - result.setParam(rmsJobParam); result.setId(rmsJobParam.getId()); result.setStats(RmsJobStats.ERROR.value()); result.setErrorMsg(ExceptionUtils.getStackTrace(e)); //记录 - saveRmsJobResult(result); + saveRmsJobLog(rmsJobParam, result); //抛出异常 LOGGER.error("RmsJob error:", e); throw new JobExecutionException(e); @@ -97,15 +98,16 @@ public class RmsJob extends AbstractBaseJob { } /** - * 描述 : 保存 + * 保存 * + * @param param param * @param result result */ - private void saveRmsJobResult(RmsJobResult result) { + private void saveRmsJobLog(RmsJobParam param, RmsJobResult result) { String[] beanNames = this.getApplicationContext().getBeanNamesForType(IRmsJobLog.class); if (ArrayUtils.isNotEmpty(beanNames)) { IRmsJobLog rmsJobLog = this.getApplicationContext().getBean(IRmsJobLog.class); - rmsJobLog.save(result); + rmsJobLog.save(param, result); } } diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java index 056b7af..c5a8c80 100644 --- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java +++ b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java @@ -34,15 +34,13 @@ public interface IJobController { * @param jobCode 作业代码 * @return 操作结果 * @throws ClassNotFoundException ClassNotFoundException - * @throws SchedulerException SchedulerException + * @throws SchedulerException SchedulerException */ @ApiOperation(value = "SCHEDULER_JOB_1", notes = "保存作业") - @ApiImplicitParams({ - @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") - }) + @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") }) @RequestMapping(value = "{jobCode}", method = RequestMethod.POST) RestResponse save(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR @@ -52,15 +50,13 @@ public interface IJobController { * @param jobCode 作业代码 * @return 操作结果 * @throws ClassNotFoundException ClassNotFoundException - * @throws SchedulerException SchedulerException + * @throws SchedulerException SchedulerException */ @ApiOperation(value = "SCHEDULER_JOB_2", notes = "保存作业(覆盖)") - @ApiImplicitParams({ - @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") - }) + @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") }) @RequestMapping(value = "{jobCode}/cover", method = RequestMethod.PUT) RestResponse saveCover(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR @@ -72,30 +68,27 @@ public interface IJobController { * @throws SchedulerException SchedulerException */ @ApiOperation(value = "SCHEDULER_JOB_3", notes = "移除作业") - @ApiImplicitParams({ - @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") - }) + @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") }) @RequestMapping(value = "{jobCode}", method = RequestMethod.DELETE) RestResponse remove(@PathVariable String jobCode) throws SchedulerException; //NOSONAR /** * 描述 : 触发作业 * - * @param jobCode 作业代码 + * @param jobCode 作业代码 * @param jobDataMap jobDataMap * @return 操作结果 * @throws SchedulerException SchedulerException */ @ApiOperation(value = "SCHEDULER_JOB_4", notes = "触发作业") - @ApiImplicitParams({ - @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), - @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string")}) + @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"), + @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") }) @RequestMapping(value = "trigger/{jobCode}", method = RequestMethod.POST) - RestResponse trigger(@PathVariable String jobCode, @RequestBody Map jobDataMap) throws SchedulerException; + RestResponse trigger(@PathVariable String jobCode, @RequestBody Map jobDataMap) throws SchedulerException; } diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/JobController.java b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/JobController.java index a4c7963..1df85a3 100644 --- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/JobController.java +++ b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/JobController.java @@ -8,6 +8,7 @@ package org.itkk.udf.scheduler.web; import org.apache.commons.collections4.MapUtils; import org.itkk.udf.core.RestResponse; +import org.itkk.udf.scheduler.client.TriggerDataMapKey; import org.itkk.udf.scheduler.client.TriggerType; import org.itkk.udf.scheduler.service.JobService; import org.quartz.JobDataMap; @@ -35,15 +36,13 @@ public class JobController implements IJobController { private JobService jobService; @Override - public RestResponse save(@PathVariable String jobCode) - throws ClassNotFoundException, SchedulerException { + public RestResponse save(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException { jobService.save(jobCode, false); return new RestResponse<>(); } @Override - public RestResponse saveCover(@PathVariable String jobCode) - throws ClassNotFoundException, SchedulerException { + public RestResponse saveCover(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException { jobService.save(jobCode, true); return new RestResponse<>(); } @@ -55,8 +54,7 @@ public class JobController implements IJobController { } @Override - public RestResponse trigger(@PathVariable String jobCode, - @RequestBody Map jobDataMap) throws SchedulerException { + public RestResponse trigger(@PathVariable String jobCode, @RequestBody Map jobDataMap) throws SchedulerException { //生成id String triggerId = UUID.randomUUID().toString(); //生成jobDataMap @@ -68,8 +66,10 @@ public class JobController implements IJobController { jdm = new JobDataMap(jobDataMap); } //添加参数 - jdm.put("triggerId", triggerId); - jdm.put("triggerType", TriggerType.MANUAL.value()); + jdm.put(TriggerDataMapKey.TRIGGER_ID.value(), triggerId); + if (!jobDataMap.containsKey(TriggerDataMapKey.TRIGGER_TYPE.value())) { + jdm.put(TriggerDataMapKey.TRIGGER_TYPE.value(), TriggerType.MANUAL.value()); + } //触发 jobService.trigger(jobCode, jdm); //返回 diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/SchClientCallbackController.java b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/SchClientCallbackController.java index 65abbf1..db55a30 100644 --- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/SchClientCallbackController.java +++ b/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/SchClientCallbackController.java @@ -31,7 +31,7 @@ public class SchClientCallbackController implements ISchClientCallbackController @Override public RestResponse callback(@RequestBody RmsJobResult result) { if (rmsJobLog != null) { - rmsJobLog.save(result); + rmsJobLog.save(null, result); } return new RestResponse<>(); }