diff --git a/pom.xml b/pom.xml index d74eafb..29d6202 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,8 @@ udf-starter-amqp-rabbitmq udf-starter-file udf-starter-mail - udf-starter-scheduler + udf-starter-scheduler + udf-starter-scheduler-client @@ -94,6 +95,12 @@ udf-starter-scheduler ${udf-starter.version} + + + com.egridcloud.udf + udf-starter-scheduler-client + ${udf-starter.version} + diff --git a/udf-starter-scheduler-client/.checkstyle b/udf-starter-scheduler-client/.checkstyle new file mode 100644 index 0000000..5b35a1b --- /dev/null +++ b/udf-starter-scheduler-client/.checkstyle @@ -0,0 +1,7 @@ + + + + + + + diff --git a/udf-starter-scheduler-client/.gitignore b/udf-starter-scheduler-client/.gitignore new file mode 100644 index 0000000..c541155 --- /dev/null +++ b/udf-starter-scheduler-client/.gitignore @@ -0,0 +1,4 @@ +/target/ +/bin/ +/.classpath +/.project diff --git a/udf-starter-scheduler-client/pom.xml b/udf-starter-scheduler-client/pom.xml new file mode 100644 index 0000000..a7c8f9b --- /dev/null +++ b/udf-starter-scheduler-client/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + udf-starter-scheduler-client + udf-starter-scheduler-client + jar + http://www.egridcloud.com + + + com.egridcloud.udf + udf-starter + 1.0 + + + + + + com.egridcloud.udf + udf-starter-core + + + + org.springframework + spring-context-support + + + + org.quartz-scheduler + quartz + ${quartz.version} + + + diff --git a/udf-starter-scheduler-client/src/main/java/com/egridcloud/udf/scheduler/client/domain/GeneralJobParam.java b/udf-starter-scheduler-client/src/main/java/com/egridcloud/udf/scheduler/client/domain/GeneralJobParam.java new file mode 100644 index 0000000..c2171b1 --- /dev/null +++ b/udf-starter-scheduler-client/src/main/java/com/egridcloud/udf/scheduler/client/domain/GeneralJobParam.java @@ -0,0 +1,126 @@ +/** + * GeneralJobParam.java + * Created at 2017-06-04 + * Created by Administrator + * Copyright (C) 2016 egridcloud.com, All rights reserved. + */ +package com.egridcloud.udf.scheduler.client.domain; + +import java.io.Serializable; +import java.util.Date; +import java.util.UUID; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * 描述 : GeneralJobParam + * + * @author Administrator + * + */ +@ApiModel(description = "通用作业参数") +public class GeneralJobParam implements Serializable { + + /** + * 描述 : ID + */ + private static final long serialVersionUID = 1L; + + /** + * 描述 : 执行ID + */ + @ApiModelProperty(value = "执行ID", required = true, dataType = "string") + private String id = UUID.randomUUID().toString(); + + /** + * 描述 : bean名称 + */ + @ApiModelProperty(value = "bean名称", required = true, dataType = "string") + private String beanName; + + /** + * 描述 : 服务端初始化开始时间 + */ + @ApiModelProperty(value = "服务端初始化开始时间", required = true, dataType = "date") + private Date serverInitStartDate; + + /** + * 描述 : 服务端开始执行时间 + */ + @ApiModelProperty(value = "服务端开始执行时间", required = true, dataType = "date") + private Date serverStartDate; + + /** + * 描述 : 获取serverInitStartDate + * + * @return the serverInitStartDate + */ + public Date getServerInitStartDate() { + return serverInitStartDate; + } + + /** + * 描述 : 设置serverInitStartDate + * + * @param serverInitStartDate the serverInitStartDate to set + */ + public void setServerInitStartDate(Date serverInitStartDate) { + this.serverInitStartDate = serverInitStartDate; + } + + /** + * 描述 : 获取serverStartDate + * + * @return the serverStartDate + */ + public Date getServerStartDate() { + return serverStartDate; + } + + /** + * 描述 : 设置serverStartDate + * + * @param serverStartDate the serverStartDate to set + */ + public void setServerStartDate(Date serverStartDate) { + this.serverStartDate = serverStartDate; + } + + /** + * 描述 : 获取id + * + * @return the id + */ + public String getId() { + return id; + } + + /** + * 描述 : 设置id + * + * @param id the id to set + */ + public void setId(String id) { + this.id = id; + } + + /** + * 描述 : 获取beanName + * + * @return the beanName + */ + public String getBeanName() { + return beanName; + } + + /** + * 描述 : 设置beanName + * + * @param beanName the beanName to set + */ + public void setBeanName(String beanName) { + this.beanName = beanName; + } + +} diff --git a/udf-starter-scheduler/pom.xml b/udf-starter-scheduler/pom.xml index e72704d..03e6dff 100644 --- a/udf-starter-scheduler/pom.xml +++ b/udf-starter-scheduler/pom.xml @@ -20,6 +20,11 @@ com.egridcloud.udf udf-starter-core + + + com.egridcloud.udf + udf-starter-scheduler-client + org.springframework diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/IGeneralJob.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/IGeneralJob.java new file mode 100644 index 0000000..f6bcb74 --- /dev/null +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/IGeneralJob.java @@ -0,0 +1,17 @@ +/** + * IGeneralJob.java + * Created at 2017-06-04 + * Created by Administrator + * Copyright (C) 2016 egridcloud.com, All rights reserved. + */ +package com.egridcloud.udf.scheduler; + +/** + * 描述 : IGeneralJob + * + * @author Administrator + * + */ +public interface IGeneralJob { + +} diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/GeneralJob.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/GeneralJob.java new file mode 100644 index 0000000..6cb11f7 --- /dev/null +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/job/GeneralJob.java @@ -0,0 +1,63 @@ +/** + * GeneralJob.java + * Created at 2017-06-04 + * Created by Administrator + * Copyright (C) 2016 egridcloud.com, All rights reserved. + */ +package com.egridcloud.udf.scheduler.job; + +import java.util.Date; + +import org.apache.commons.lang3.StringUtils; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import com.egridcloud.udf.scheduler.SchException; +import com.egridcloud.udf.scheduler.client.domain.GeneralJobParam; + +/** + * 描述 : GeneralJob + * + * @author Administrator + * + */ +public class GeneralJob extends AbstractBaseJob { + + @Override + protected void executeInternal(JobExecutionContext jobExecutionContext) + throws JobExecutionException { + //初始化开始时间 + Date serverInitStartDate = new Date(); + //从trigger中获得jobDataMap + JobDataMap jobDataMap = jobExecutionContext.getTrigger().getJobDataMap(); + //获得必要字段 + String beanName = jobDataMap.getString("beanName"); + Boolean async = jobDataMap.getBoolean("async"); + Boolean ignore = jobDataMap.getBoolean("ignore"); + //校验 + if (StringUtils.isBlank(beanName)) { + throw new SchException("beanName can not be empty"); + } + //封装bean + GeneralJobParam generalJobParam = new GeneralJobParam(); + generalJobParam.setBeanName(beanName); + generalJobParam.setServerInitStartDate(serverInitStartDate); + generalJobParam.setServerStartDate(new Date()); + //判断同步还是异步 + if (async) { + //保存数据 + //判断是否跳过 + if (ignore) { + //查询是否有正在执行的任务 + //如果有,直接写入任务,状态为跳过 + //跳出 + } + //执行任务 + //拿到结果后,更新至数据库 + } else { + + } + } + +} diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/JobDetailMeta.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/JobDetailMeta.java index 61eefc4..689c4c2 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/JobDetailMeta.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/JobDetailMeta.java @@ -30,7 +30,7 @@ public class JobDetailMeta implements Serializable { /** * 描述 : 组别 */ - private String group; + private String group = "default";; /** * 描述 : 类型 @@ -40,7 +40,7 @@ public class JobDetailMeta implements Serializable { /** * 描述 : 描述 */ - private String description; + private String description = "暂无描述"; /** * 描述 : 是否可恢复 diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/SimpleTriggerMeta.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/SimpleTriggerMeta.java index 589d2ab..84c8b6d 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/SimpleTriggerMeta.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/SimpleTriggerMeta.java @@ -8,6 +8,8 @@ package com.egridcloud.udf.scheduler.meta; import java.io.Serializable; +import org.quartz.SimpleTrigger; + /** * 描述 : SimpleTriggerMeta.java * @@ -24,7 +26,7 @@ public class SimpleTriggerMeta extends TriggerMeta implements Serializable { /** * 描述 : 重复次数 */ - private Integer repeatCount; + private Integer repeatCount = SimpleTrigger.REPEAT_INDEFINITELY; /** * 描述 : 执行间隔 diff --git a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/TriggerMeta.java b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/TriggerMeta.java index 826b089..83b00c0 100644 --- a/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/TriggerMeta.java +++ b/udf-starter-scheduler/src/main/java/com/egridcloud/udf/scheduler/meta/TriggerMeta.java @@ -38,12 +38,12 @@ public class TriggerMeta implements Serializable { /** * 描述 : 组别 */ - private String group; + private String group = "default"; /** * 描述 : 描述 */ - private String description; + private String description = "暂无描述"; /** * 描述 : 开始时间