抛弃任务执行机器属性,执行地址统一改为从执行器获取(目前仅支持DB注册方式获取)
This commit is contained in:
parent
354f6483b2
commit
965a0aedd6
|
@ -145,9 +145,9 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
|
|||
|
||||
|
||||
|
||||
CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
|
||||
CREATE TABLE XXL_JOB_QRTZ_TRIGGER_INFO (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`job_group` varchar(255) NOT NULL COMMENT '任务组',
|
||||
`job_group` int(11) NOT NULL COMMENT '任务组(执行器ID)',
|
||||
`job_name` varchar(255) NOT NULL COMMENT '任务名',
|
||||
`job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
|
||||
`job_desc` varchar(255) NOT NULL,
|
||||
|
@ -155,8 +155,6 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
|
|||
`update_time` datetime DEFAULT NULL,
|
||||
`author` varchar(64) DEFAULT NULL COMMENT '作者',
|
||||
`alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
|
||||
`executor_appname` varchar(255) DEFAULT NULL COMMENT '执行器对应的AppName',
|
||||
`executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,有多个则逗号分隔',
|
||||
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
|
||||
`executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
|
||||
`glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
|
||||
|
@ -167,9 +165,9 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
|
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
|
||||
CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOG (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`job_group` varchar(255) NOT NULL COMMENT '任务组',
|
||||
`job_group` int(11) NOT NULL COMMENT '任务组',
|
||||
`job_name` varchar(255) NOT NULL COMMENT '任务名',
|
||||
`executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
|
||||
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
|
||||
|
@ -185,7 +183,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
|
|||
|
||||
CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOGGLUE (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`job_group` varchar(255) NOT NULL,
|
||||
`job_group` int(11) NOT NULL,
|
||||
`job_name` varchar(255) NOT NULL,
|
||||
`glue_source` text,
|
||||
`glue_remark` varchar(128) NOT NULL,
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
package com.xxl.job.admin.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import com.xxl.job.admin.core.model.ReturnT;
|
||||
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||
import com.xxl.job.admin.core.model.XxlJobLogGlue;
|
||||
import com.xxl.job.admin.dao.IXxlJobInfoDao;
|
||||
import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* job code controller
|
||||
|
@ -30,7 +28,7 @@ public class JobCodeController {
|
|||
private IXxlJobLogGlueDao xxlJobLogGlueDao;
|
||||
|
||||
@RequestMapping
|
||||
public String index(Model model, String jobGroup, String jobName) {
|
||||
public String index(Model model, int jobGroup, String jobName) {
|
||||
XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
|
||||
List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.selectList(jobGroup, jobName);
|
||||
model.addAttribute("jobInfo", jobInfo);
|
||||
|
@ -40,7 +38,7 @@ public class JobCodeController {
|
|||
|
||||
@RequestMapping("/save")
|
||||
@ResponseBody
|
||||
public ReturnT<String> save(Model model, String jobGroup, String jobName, String glueSource, String glueRemark) {
|
||||
public ReturnT<String> save(Model model, int jobGroup, String jobName, String glueSource, String glueRemark) {
|
||||
// valid
|
||||
if (glueRemark==null) {
|
||||
return new ReturnT<String>(500, "请输入备注");
|
||||
|
|
|
@ -87,7 +87,7 @@ public class JobGroupController {
|
|||
public ReturnT<String> remove(int id){
|
||||
|
||||
// valid
|
||||
int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null);
|
||||
int count = xxlJobInfoDao.pageListCount(0, 10, id, null);
|
||||
if (count > 0) {
|
||||
return new ReturnT<String>(500, "该分组使用中, 不可删除");
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ public class JobInfoController {
|
|||
@ResponseBody
|
||||
public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
|
||||
@RequestParam(required = false, defaultValue = "10") int length,
|
||||
String jobGroup, String executorHandler, String filterTime) {
|
||||
int jobGroup, String executorHandler, String filterTime) {
|
||||
|
||||
return xxlJobService.pageList(start, length, jobGroup, executorHandler, filterTime);
|
||||
}
|
||||
|
@ -69,25 +69,25 @@ public class JobInfoController {
|
|||
|
||||
@RequestMapping("/remove")
|
||||
@ResponseBody
|
||||
public ReturnT<String> remove(String jobGroup, String jobName) {
|
||||
public ReturnT<String> remove(int jobGroup, String jobName) {
|
||||
return xxlJobService.remove(jobGroup, jobName);
|
||||
}
|
||||
|
||||
@RequestMapping("/pause")
|
||||
@ResponseBody
|
||||
public ReturnT<String> pause(String jobGroup, String jobName) {
|
||||
public ReturnT<String> pause(int jobGroup, String jobName) {
|
||||
return xxlJobService.pause(jobGroup, jobName);
|
||||
}
|
||||
|
||||
@RequestMapping("/resume")
|
||||
@ResponseBody
|
||||
public ReturnT<String> resume(String jobGroup, String jobName) {
|
||||
public ReturnT<String> resume(int jobGroup, String jobName) {
|
||||
return xxlJobService.resume(jobGroup, jobName);
|
||||
}
|
||||
|
||||
@RequestMapping("/trigger")
|
||||
@ResponseBody
|
||||
public ReturnT<String> triggerJob(String jobGroup, String jobName) {
|
||||
public ReturnT<String> triggerJob(int jobGroup, String jobName) {
|
||||
return xxlJobService.triggerJob(jobGroup, jobName);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ public class JobLogController {
|
|||
@ResponseBody
|
||||
public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
|
||||
@RequestParam(required = false, defaultValue = "10") int length,
|
||||
String jobGroup, String jobName, String filterTime) {
|
||||
int jobGroup, String jobName, String filterTime) {
|
||||
|
||||
// parse param
|
||||
Date triggerTimeStart = null;
|
||||
|
@ -161,7 +161,7 @@ public class JobLogController {
|
|||
RequestModel requestModel = new RequestModel();
|
||||
requestModel.setTimestamp(System.currentTimeMillis());
|
||||
requestModel.setAction(ActionRepository.KILL.name());
|
||||
requestModel.setJobGroup(log.getJobGroup());
|
||||
requestModel.setJobGroup(String.valueOf(log.getJobGroup()));
|
||||
requestModel.setJobName(log.getJobName());
|
||||
|
||||
ResponseModel responseModel = XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.addressToUrl(log.getExecutorAddress()), requestModel);
|
||||
|
|
|
@ -77,10 +77,10 @@ public class XxlJobLogCallbackServerHandler extends AbstractHandler {
|
|||
for (int i = 0; i < childJobKeys.length; i++) {
|
||||
String[] jobKeyArr = childJobKeys[i].split("_");
|
||||
if (jobKeyArr!=null && jobKeyArr.length==2) {
|
||||
XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(jobKeyArr[0], jobKeyArr[1]);
|
||||
XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKeyArr[0]), jobKeyArr[1]);
|
||||
if (childJobInfo!=null) {
|
||||
try {
|
||||
boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), childJobInfo.getJobGroup());
|
||||
boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), String.valueOf(childJobInfo.getJobGroup()));
|
||||
|
||||
// add msg
|
||||
childTriggerMsg += MessageFormat.format("<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}",
|
||||
|
|
|
@ -37,7 +37,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
throws JobExecutionException {
|
||||
JobKey jobKey = context.getTrigger().getJobKey();
|
||||
|
||||
XxlJobInfo jobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(jobKey.getGroup(), jobKey.getName());
|
||||
XxlJobInfo jobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKey.getGroup()), jobKey.getName());
|
||||
// save log
|
||||
XxlJobLog jobLog = new XxlJobLog();
|
||||
jobLog.setJobGroup(jobInfo.getJobGroup());
|
||||
|
@ -57,7 +57,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
RequestModel requestModel = new RequestModel();
|
||||
requestModel.setTimestamp(System.currentTimeMillis());
|
||||
requestModel.setAction(ActionRepository.RUN.name());
|
||||
requestModel.setJobGroup(jobInfo.getJobGroup());
|
||||
requestModel.setJobGroup(String.valueOf(jobInfo.getJobGroup()));
|
||||
requestModel.setJobName(jobInfo.getJobName());
|
||||
requestModel.setExecutorHandler(jobInfo.getExecutorHandler());
|
||||
requestModel.setExecutorParams(jobInfo.getExecutorParam());
|
||||
|
@ -67,17 +67,9 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
|
||||
// parse address
|
||||
List<String> addressList = new ArrayList<String>();
|
||||
String parseAddressMsg = null;
|
||||
if (StringUtils.isNotBlank(jobInfo.getExecutorAddress())) {
|
||||
List<String> addressArr = Arrays.asList(jobInfo.getExecutorAddress().split(","));
|
||||
addressList.addAll(addressArr);
|
||||
parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
|
||||
} else {
|
||||
XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
|
||||
if (group!=null) {
|
||||
addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
|
||||
}
|
||||
parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
|
||||
XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
|
||||
if (group!=null) {
|
||||
addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
|
||||
}
|
||||
|
||||
// failover trigger
|
||||
|
@ -89,7 +81,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
// update trigger info
|
||||
jobLog.setTriggerTime(new Date());
|
||||
jobLog.setTriggerStatus(responseModel.getStatus());
|
||||
jobLog.setTriggerMsg(parseAddressMsg + responseModel.getMsg());
|
||||
jobLog.setTriggerMsg(responseModel.getMsg());
|
||||
DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
|
||||
|
||||
// monitor triger
|
||||
|
@ -107,7 +99,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
if (addressList==null || addressList.size() < 1) {
|
||||
ResponseModel result = new ResponseModel();
|
||||
result.setStatus(ResponseModel.FAIL);
|
||||
result.setMsg( "Trigger error, <br>>>>address list is null <br><hr>" );
|
||||
result.setMsg( "Trigger error, <br>>>>[address] is null <br><hr>" );
|
||||
return result;
|
||||
} else if (addressList.size() == 1) {
|
||||
String address = addressList.get(0);
|
||||
|
|
|
@ -10,7 +10,7 @@ public class XxlJobInfo {
|
|||
|
||||
private int id;
|
||||
|
||||
private String jobGroup; // 任务组
|
||||
private int jobGroup; // 任务组 (执行器ID)
|
||||
private String jobName; // 任务名
|
||||
private String jobCron; // 任务执行CRON表达式 【base on quartz】
|
||||
private String jobDesc;
|
||||
|
@ -21,7 +21,6 @@ public class XxlJobInfo {
|
|||
private String author; // 负责人
|
||||
private String alarmEmail; // 报警邮件
|
||||
|
||||
private String executorAddress; // 执行器地址,有多个则逗号分隔
|
||||
private String executorHandler; // 执行器,任务Handler名称
|
||||
private String executorParam; // 执行器,任务参数
|
||||
|
||||
|
@ -42,11 +41,11 @@ public class XxlJobInfo {
|
|||
this.id = id;
|
||||
}
|
||||
|
||||
public String getJobGroup() {
|
||||
public int getJobGroup() {
|
||||
return jobGroup;
|
||||
}
|
||||
|
||||
public void setJobGroup(String jobGroup) {
|
||||
public void setJobGroup(int jobGroup) {
|
||||
this.jobGroup = jobGroup;
|
||||
}
|
||||
|
||||
|
@ -106,14 +105,6 @@ public class XxlJobInfo {
|
|||
this.alarmEmail = alarmEmail;
|
||||
}
|
||||
|
||||
public String getExecutorAddress() {
|
||||
return executorAddress;
|
||||
}
|
||||
|
||||
public void setExecutorAddress(String executorAddress) {
|
||||
this.executorAddress = executorAddress;
|
||||
}
|
||||
|
||||
public String getExecutorHandler() {
|
||||
return executorHandler;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ public class XxlJobLog {
|
|||
private int id;
|
||||
|
||||
// job info
|
||||
private String jobGroup;
|
||||
private int jobGroup;
|
||||
private String jobName;
|
||||
|
||||
private String executorAddress; // 执行器地址,有多个则逗号分隔
|
||||
|
@ -34,10 +34,10 @@ public class XxlJobLog {
|
|||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getJobGroup() {
|
||||
public int getJobGroup() {
|
||||
return jobGroup;
|
||||
}
|
||||
public void setJobGroup(String jobGroup) {
|
||||
public void setJobGroup(int jobGroup) {
|
||||
this.jobGroup = jobGroup;
|
||||
}
|
||||
public String getJobName() {
|
||||
|
|
|
@ -8,7 +8,7 @@ public class XxlJobLogGlue {
|
|||
|
||||
private int id;
|
||||
|
||||
private String jobGroup;
|
||||
private int jobGroup;
|
||||
private String jobName;
|
||||
|
||||
private String glueSource;
|
||||
|
@ -22,10 +22,10 @@ public class XxlJobLogGlue {
|
|||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getJobGroup() {
|
||||
public int getJobGroup() {
|
||||
return jobGroup;
|
||||
}
|
||||
public void setJobGroup(String jobGroup) {
|
||||
public void setJobGroup(int jobGroup) {
|
||||
this.jobGroup = jobGroup;
|
||||
}
|
||||
public String getJobName() {
|
||||
|
|
|
@ -120,8 +120,8 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
|
|||
// fill job info
|
||||
public static void fillJobInfo(XxlJobInfo jobInfo) {
|
||||
// TriggerKey : name + group
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
|
||||
|
||||
try {
|
||||
Trigger trigger = scheduler.getTrigger(triggerKey);
|
||||
|
||||
|
@ -133,6 +133,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
|
|||
jobInfo.setJobCron(cronExpression);
|
||||
}
|
||||
|
||||
//JobKey jobKey = new JobKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
|
||||
//JobDetail jobDetail = scheduler.getJobDetail(jobKey);
|
||||
//String jobClass = jobDetail.getJobClass().getName();
|
||||
|
||||
|
@ -153,19 +154,19 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
|
|||
|
||||
// addJob 新增
|
||||
@SuppressWarnings("unchecked")
|
||||
public static boolean addJob(XxlJobInfo jobInfo) throws SchedulerException {
|
||||
public static boolean addJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
|
||||
// TriggerKey : name + group
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
|
||||
JobKey jobKey = new JobKey(jobName, jobGroup);
|
||||
|
||||
// TriggerKey valid if_exists
|
||||
if (checkExists(jobInfo.getJobName(), jobInfo.getJobGroup())) {
|
||||
logger.info(">>>>>>>>> addJob fail, job already exist, jobInfo:{}", jobInfo);
|
||||
if (checkExists(jobName, jobGroup)) {
|
||||
logger.info(">>>>>>>>> addJob fail, job already exist, jobGroup:{}, jobName:{}", jobGroup, jobName);
|
||||
return false;
|
||||
}
|
||||
|
||||
// CronTrigger : TriggerKey + cronExpression // withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
|
||||
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
|
||||
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
|
||||
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
|
||||
|
||||
// JobDetail : jobClass
|
||||
|
@ -186,20 +187,20 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
|
|||
}
|
||||
|
||||
// reschedule
|
||||
public static boolean rescheduleJob(XxlJobInfo jobInfo) throws SchedulerException {
|
||||
public static boolean rescheduleJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
|
||||
|
||||
// TriggerKey valid if_exists
|
||||
if (!checkExists(jobInfo.getJobName(), jobInfo.getJobGroup())) {
|
||||
logger.info(">>>>>>>>>>> rescheduleJob fail, job not exists, jobInfo:{}", jobInfo);
|
||||
if (!checkExists(jobName, jobGroup)) {
|
||||
logger.info(">>>>>>>>>>> rescheduleJob fail, job not exists, JobGroup:{}, JobName:{}", jobGroup, jobName);
|
||||
return false;
|
||||
}
|
||||
|
||||
// TriggerKey : name + group
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
|
||||
JobKey jobKey = new JobKey(jobName, jobGroup);
|
||||
|
||||
// CronTrigger : TriggerKey + cronExpression
|
||||
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
|
||||
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
|
||||
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
|
||||
|
||||
//scheduler.rescheduleJob(triggerKey, cronTrigger);
|
||||
|
@ -215,7 +216,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
|
|||
triggerSet.add(cronTrigger);
|
||||
|
||||
scheduler.scheduleJob(jobDetail, triggerSet, true);
|
||||
logger.info(">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}", jobInfo.getJobGroup(), jobInfo.getJobName());
|
||||
logger.info(">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}", jobGroup, jobName);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.xxl.job.admin.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* job info
|
||||
|
@ -12,16 +12,16 @@ import com.xxl.job.admin.core.model.XxlJobLog;
|
|||
*/
|
||||
public interface IXxlJobInfoDao {
|
||||
|
||||
public List<XxlJobInfo> pageList(int offset, int pagesize, String jobGroup, String executorHandler);
|
||||
public int pageListCount(int offset, int pagesize, String jobGroup, String executorHandler);
|
||||
public List<XxlJobInfo> pageList(int offset, int pagesize, int jobGroup, String executorHandler);
|
||||
public int pageListCount(int offset, int pagesize, int jobGroup, String executorHandler);
|
||||
|
||||
public int save(XxlJobInfo info);
|
||||
|
||||
public XxlJobInfo load(String jobGroup, String jobName);
|
||||
public XxlJobInfo load(int jobGroup, String jobName);
|
||||
|
||||
public int update(XxlJobInfo item);
|
||||
|
||||
public int delete(String jobGroup, String jobName);
|
||||
public int delete(int jobGroup, String jobName);
|
||||
|
||||
public List<XxlJobLog> getJobsByGroup(String jobGroup);
|
||||
}
|
||||
|
|
|
@ -1,26 +1,25 @@
|
|||
package com.xxl.job.admin.dao;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
|
||||
/**
|
||||
* job log
|
||||
* @author xuxueli 2016-1-12 18:03:06
|
||||
*/
|
||||
public interface IXxlJobLogDao {
|
||||
|
||||
public List<XxlJobLog> pageList(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
|
||||
public int pageListCount(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
|
||||
public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
|
||||
public int pageListCount(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
|
||||
|
||||
public XxlJobLog load(int id);
|
||||
public XxlJobLog loadByGroupAndName(String jobGroup, String jobName);
|
||||
|
||||
|
||||
public int save(XxlJobLog xxlJobLog);
|
||||
public int updateTriggerInfo(XxlJobLog xxlJobLog);
|
||||
public int updateHandleInfo(XxlJobLog xxlJobLog);
|
||||
|
||||
public int delete(String jobGroup, String jobName);
|
||||
public int delete(int jobGroup, String jobName);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package com.xxl.job.admin.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobLogGlue;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* job log for glue
|
||||
* @author xuxueli 2016-5-19 18:04:56
|
||||
|
@ -12,10 +12,10 @@ public interface IXxlJobLogGlueDao {
|
|||
|
||||
public int save(XxlJobLogGlue xxlJobLogGlue);
|
||||
|
||||
public List<XxlJobLogGlue> selectList(String jobGroup, String jobName);
|
||||
public List<XxlJobLogGlue> selectList(int jobGroup, String jobName);
|
||||
|
||||
public int removeOld(String jobGroup, String jobName, int limit);
|
||||
public int removeOld(int jobGroup, String jobName, int limit);
|
||||
|
||||
public int delete(String jobGroup, String jobName);
|
||||
public int delete(int jobGroup, String jobName);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
package com.xxl.job.admin.dao.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
import com.xxl.job.admin.dao.IXxlJobInfoDao;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||
import com.xxl.job.admin.dao.IXxlJobInfoDao;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* job info
|
||||
|
@ -23,7 +21,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
|
|||
public SqlSessionTemplate sqlSessionTemplate;
|
||||
|
||||
@Override
|
||||
public List<XxlJobInfo> pageList(int offset, int pagesize, String jobGroup, String executorHandler) {
|
||||
public List<XxlJobInfo> pageList(int offset, int pagesize, int jobGroup, String executorHandler) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("offset", offset);
|
||||
params.put("pagesize", pagesize);
|
||||
|
@ -34,7 +32,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int pageListCount(int offset, int pagesize, String jobGroup, String executorHandler) {
|
||||
public int pageListCount(int offset, int pagesize, int jobGroup, String executorHandler) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("offset", offset);
|
||||
params.put("pagesize", pagesize);
|
||||
|
@ -50,7 +48,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public XxlJobInfo load(String jobGroup, String jobName) {
|
||||
public XxlJobInfo load(int jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
@ -64,7 +62,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int delete(String jobGroup, String jobName) {
|
||||
public int delete(int jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
package com.xxl.job.admin.dao.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
import com.xxl.job.admin.dao.IXxlJobLogDao;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* job log
|
||||
|
@ -23,7 +21,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
|
|||
public SqlSessionTemplate sqlSessionTemplate;
|
||||
|
||||
@Override
|
||||
public List<XxlJobLog> pageList(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
|
||||
public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("offset", offset);
|
||||
params.put("pagesize", pagesize);
|
||||
|
@ -36,7 +34,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int pageListCount(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
|
||||
public int pageListCount(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("offset", offset);
|
||||
params.put("pagesize", pagesize);
|
||||
|
@ -52,14 +50,6 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
|
|||
public XxlJobLog load(int id) {
|
||||
return sqlSessionTemplate.selectOne("XxlJobLogMapper.load", id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XxlJobLog loadByGroupAndName(String jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
return sqlSessionTemplate.selectOne("XxlJobLogMapper.loadByGroupAndName", params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int save(XxlJobLog xxlJobLog) {
|
||||
|
@ -83,7 +73,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int delete(String jobGroup, String jobName) {
|
||||
public int delete(int jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
package com.xxl.job.admin.dao.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.xxl.job.admin.core.model.XxlJobLogGlue;
|
||||
import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* job log for glue
|
||||
|
@ -27,7 +25,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<XxlJobLogGlue> selectList(String jobGroup, String jobName) {
|
||||
public List<XxlJobLogGlue> selectList(int jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
@ -35,7 +33,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int removeOld(String jobGroup, String jobName, int limit) {
|
||||
public int removeOld(int jobGroup, String jobName, int limit) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
@ -44,7 +42,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int delete(String jobGroup, String jobName) {
|
||||
public int delete(int jobGroup, String jobName) {
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("jobGroup", jobGroup);
|
||||
params.put("jobName", jobName);
|
||||
|
|
|
@ -11,7 +11,7 @@ import java.util.Map;
|
|||
*/
|
||||
public interface IXxlJobService {
|
||||
|
||||
public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
|
||||
public Map<String, Object> pageList(int start, int length, int jobGroup, String executorHandler, String filterTime);
|
||||
|
||||
public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
|
||||
String executorAddress, String executorHandler, String executorParam,
|
||||
|
@ -20,12 +20,12 @@ public interface IXxlJobService {
|
|||
public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
|
||||
|
||||
public ReturnT<String> remove(String jobGroup, String jobName);
|
||||
public ReturnT<String> remove(int jobGroup, String jobName);
|
||||
|
||||
public ReturnT<String> pause(String jobGroup, String jobName);
|
||||
public ReturnT<String> pause(int jobGroup, String jobName);
|
||||
|
||||
public ReturnT<String> resume(String jobGroup, String jobName);
|
||||
public ReturnT<String> resume(int jobGroup, String jobName);
|
||||
|
||||
public ReturnT<String> triggerJob(String jobGroup, String jobName);
|
||||
public ReturnT<String> triggerJob(int jobGroup, String jobName);
|
||||
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
private IXxlJobLogGlueDao xxlJobLogGlueDao;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime) {
|
||||
public Map<String, Object> pageList(int start, int length, int jobGroup, String executorHandler, String filterTime) {
|
||||
|
||||
// page list
|
||||
List<XxlJobInfo> list = xxlJobInfoDao.pageList(start, length, jobGroup, executorHandler);
|
||||
|
@ -96,7 +96,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
if (childJobKeyArr.length!=2) {
|
||||
return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
|
||||
}
|
||||
XxlJobInfo childJobInfo = xxlJobInfoDao.load(childJobKeyArr[0], childJobKeyArr[1]);
|
||||
XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
|
||||
if (childJobInfo==null) {
|
||||
return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
|
||||
}
|
||||
|
@ -116,13 +116,12 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
|
||||
// Backup to the database
|
||||
XxlJobInfo jobInfo = new XxlJobInfo();
|
||||
jobInfo.setJobGroup(String.valueOf(jobGroup));
|
||||
jobInfo.setJobGroup(jobGroup);
|
||||
jobInfo.setJobName(jobName);
|
||||
jobInfo.setJobCron(jobCron);
|
||||
jobInfo.setJobDesc(jobDesc);
|
||||
jobInfo.setAuthor(author);
|
||||
jobInfo.setAlarmEmail(alarmEmail);
|
||||
jobInfo.setExecutorAddress(executorAddress);
|
||||
jobInfo.setExecutorHandler(executorHandler);
|
||||
jobInfo.setExecutorParam(executorParam);
|
||||
jobInfo.setGlueSwitch(glueSwitch);
|
||||
|
@ -132,7 +131,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
|
||||
try {
|
||||
// add job 2 quartz
|
||||
boolean result = DynamicSchedulerUtil.addJob(jobInfo);
|
||||
boolean result = DynamicSchedulerUtil.addJob(String.valueOf(jobGroup), jobName, jobCron);
|
||||
if (result) {
|
||||
xxlJobInfoDao.save(jobInfo);
|
||||
return ReturnT.SUCCESS;
|
||||
|
@ -181,7 +180,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
if (childJobKeyArr.length!=2) {
|
||||
return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
|
||||
}
|
||||
XxlJobInfo childJobInfo = xxlJobInfoDao.load(childJobKeyArr[0], childJobKeyArr[1]);
|
||||
XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
|
||||
if (childJobInfo==null) {
|
||||
return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
|
||||
}
|
||||
|
@ -189,12 +188,11 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
}
|
||||
|
||||
// stage job info
|
||||
XxlJobInfo jobInfo = xxlJobInfoDao.load(String.valueOf(jobGroup), jobName);
|
||||
XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
|
||||
jobInfo.setJobCron(jobCron);
|
||||
jobInfo.setJobDesc(jobDesc);
|
||||
jobInfo.setAuthor(author);
|
||||
jobInfo.setAlarmEmail(alarmEmail);
|
||||
jobInfo.setExecutorAddress(executorAddress);
|
||||
jobInfo.setExecutorHandler(executorHandler);
|
||||
jobInfo.setExecutorParam(executorParam);
|
||||
jobInfo.setGlueSwitch(glueSwitch);
|
||||
|
@ -202,7 +200,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
|
||||
try {
|
||||
// fresh quartz
|
||||
boolean ret = DynamicSchedulerUtil.rescheduleJob(jobInfo);
|
||||
boolean ret = DynamicSchedulerUtil.rescheduleJob(String.valueOf(jobGroup), jobName, jobCron);
|
||||
if (ret) {
|
||||
xxlJobInfoDao.update(jobInfo);
|
||||
return ReturnT.SUCCESS;
|
||||
|
@ -216,9 +214,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReturnT<String> remove(String jobGroup, String jobName) {
|
||||
public ReturnT<String> remove(int jobGroup, String jobName) {
|
||||
try {
|
||||
DynamicSchedulerUtil.removeJob(jobName, jobGroup);
|
||||
DynamicSchedulerUtil.removeJob(jobName, String.valueOf(jobGroup));
|
||||
xxlJobInfoDao.delete(jobGroup, jobName);
|
||||
xxlJobLogDao.delete(jobGroup, jobName);
|
||||
xxlJobLogGlueDao.delete(jobGroup, jobName);
|
||||
|
@ -230,9 +228,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReturnT<String> pause(String jobGroup, String jobName) {
|
||||
public ReturnT<String> pause(int jobGroup, String jobName) {
|
||||
try {
|
||||
DynamicSchedulerUtil.pauseJob(jobName, jobGroup); // jobStatus do not store
|
||||
DynamicSchedulerUtil.pauseJob(jobName, String.valueOf(jobGroup)); // jobStatus do not store
|
||||
return ReturnT.SUCCESS;
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -241,9 +239,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReturnT<String> resume(String jobGroup, String jobName) {
|
||||
public ReturnT<String> resume(int jobGroup, String jobName) {
|
||||
try {
|
||||
DynamicSchedulerUtil.resumeJob(jobName, jobGroup);
|
||||
DynamicSchedulerUtil.resumeJob(jobName, String.valueOf(jobGroup));
|
||||
return ReturnT.SUCCESS;
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -252,9 +250,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReturnT<String> triggerJob(String jobGroup, String jobName) {
|
||||
public ReturnT<String> triggerJob(int jobGroup, String jobName) {
|
||||
try {
|
||||
DynamicSchedulerUtil.triggerJob(jobName, jobGroup);
|
||||
DynamicSchedulerUtil.triggerJob(jobName, String.valueOf(jobGroup));
|
||||
return ReturnT.SUCCESS;
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
<result column="author" property="author" />
|
||||
<result column="alarm_email" property="alarmEmail" />
|
||||
|
||||
<result column="executor_address" property="executorAddress" />
|
||||
<result column="executor_handler" property="executorHandler" />
|
||||
<result column="executor_param" property="executorParam" />
|
||||
|
||||
|
@ -38,7 +37,6 @@
|
|||
t.update_time,
|
||||
t.author,
|
||||
t.alarm_email,
|
||||
t.executor_address,
|
||||
t.executor_handler,
|
||||
t.executor_param,
|
||||
t.glue_switch,
|
||||
|
@ -51,7 +49,7 @@
|
|||
SELECT <include refid="Base_Column_List" />
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
|
||||
<trim prefix="WHERE" prefixOverrides="AND | OR" >
|
||||
<if test="jobGroup != null and jobGroup != ''">
|
||||
<if test="jobGroup gt 0">
|
||||
AND t.job_group = #{jobGroup}
|
||||
</if>
|
||||
<if test="executorHandler != null and executorHandler != ''">
|
||||
|
@ -66,7 +64,7 @@
|
|||
SELECT count(1)
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
|
||||
<trim prefix="WHERE" prefixOverrides="AND | OR" >
|
||||
<if test="jobGroup != null and jobGroup != ''">
|
||||
<if test="jobGroup gt 0">
|
||||
AND t.job_group = #{jobGroup}
|
||||
</if>
|
||||
<if test="executorHandler != null and executorHandler != ''">
|
||||
|
@ -85,7 +83,6 @@
|
|||
update_time,
|
||||
author,
|
||||
alarm_email,
|
||||
executor_address,
|
||||
executor_handler,
|
||||
executor_param,
|
||||
glue_switch,
|
||||
|
@ -101,7 +98,6 @@
|
|||
NOW(),
|
||||
#{author},
|
||||
#{alarmEmail},
|
||||
#{executorAddress},
|
||||
#{executorHandler},
|
||||
#{executorParam},
|
||||
#{glueSwitch},
|
||||
|
@ -129,7 +125,6 @@
|
|||
update_time = NOW(),
|
||||
author = #{author},
|
||||
alarm_email = #{alarmEmail},
|
||||
executor_address = #{executorAddress},
|
||||
executor_handler = #{executorHandler},
|
||||
executor_param = #{executorParam},
|
||||
glue_switch = #{glueSwitch},
|
||||
|
@ -140,7 +135,7 @@
|
|||
AND job_name = #{jobName}
|
||||
</update>
|
||||
|
||||
<delete id="delete" parameterType="java.lang.String">
|
||||
<delete id="delete" parameterType="java.util.HashMap">
|
||||
DELETE
|
||||
FROM
|
||||
XXL_JOB_QRTZ_TRIGGER_INFO
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
SELECT <include refid="Base_Column_List" />
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_LOGGLUE AS t
|
||||
<trim prefix="WHERE" prefixOverrides="AND | OR" >
|
||||
<if test="jobGroup != null and jobGroup != ''">
|
||||
<if test="jobGroup gt 0">
|
||||
AND t.job_group = #{jobGroup}
|
||||
</if>
|
||||
<if test="jobName != null and jobName != ''">
|
||||
|
|
|
@ -83,13 +83,7 @@
|
|||
FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
|
||||
WHERE t.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="loadByGroupAndName" parameterType="java.util.HashMap" resultMap="XxlJobLog">
|
||||
SELECT <include refid="Base_Column_List" />
|
||||
FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
|
||||
WHERE t.job_group = #{jobGroup}
|
||||
AND t.job_name = #{jobName}
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
|
||||
INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
<th name="appName" >AppName</th>
|
||||
<th name="title" >名称</th>
|
||||
<th name="order" >排序</th>
|
||||
<th name="registryList" >OnLine</th>
|
||||
<th name="registryList" >OnLine 机器</th>
|
||||
<th name="operate" >操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
@ -78,7 +78,6 @@
|
|||
<th name="childJobKey" >任务Key</th>
|
||||
<th name="jobDesc" >描述</th>
|
||||
<th name="jobCron" >Cron</th>
|
||||
<th name="executorAddress" >执行器地址</th>
|
||||
<th name="executorHandler" >JobJandler</th>
|
||||
<th name="executorParam" >任务参数</th>
|
||||
<th name="addTime" >新增时间</th>
|
||||
|
@ -122,21 +121,10 @@
|
|||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">描述<font color="red">*</font></label>
|
||||
<label for="lastname" class="col-sm-2 control-label">任务描述<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" readonly >
|
||||
<span class="input-group-addon"><b>AUTO</b> <input type="checkbox" class="addressAuto" checked="checked" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
|
@ -148,16 +136,18 @@
|
|||
<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-3 col-sm-6">
|
||||
|
@ -206,20 +196,9 @@ public class DemoGlueJobHandler extends IJobHandler {
|
|||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control jobGroupTitle" maxlength="50" readonly >
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">描述<font color="red">*</font></label>
|
||||
<label for="lastname" class="col-sm-2 control-label">任务描述<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" >
|
||||
<span class="input-group-addon"><b>AUTO</b> <input type="checkbox" class="addressAuto" checked="checked" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
|
@ -231,6 +210,12 @@ public class DemoGlueJobHandler extends IJobHandler {
|
|||
</div>
|
||||
<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
|
||||
|
@ -238,10 +223,6 @@ public class DemoGlueJobHandler extends IJobHandler {
|
|||
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-3 col-sm-6">
|
||||
|
@ -250,9 +231,6 @@ public class DemoGlueJobHandler extends IJobHandler {
|
|||
<input type="hidden" name="jobGroup" >
|
||||
<input type="hidden" name="jobName" >
|
||||
</div>
|
||||
<div class="col-sm-offset-0 col-sm-3">
|
||||
启动注册 <input type="checkbox" class="ifAppName" >
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<div class="input-group">
|
||||
<span class="input-group-addon">执行器</span>
|
||||
<select class="form-control" id="jobGroup" paramVal="${jobGroup}" >
|
||||
<option value="" selected>请选择</option>
|
||||
<option value="0" selected>请选择</option>
|
||||
<#list JobGroupList as group>
|
||||
<option value="${group.id}" <#if jobGroup == group.appName && false>selected</#if> >${group.title}</option>
|
||||
</#list>
|
||||
|
|
|
@ -45,7 +45,6 @@ $(function() {
|
|||
},
|
||||
{ "data": 'jobDesc', "visible" : true},
|
||||
{ "data": 'jobCron', "visible" : true},
|
||||
{ "data": 'executorAddress', "visible" : false},
|
||||
{
|
||||
"data": 'executorHandler',
|
||||
"visible" : true,
|
||||
|
@ -113,7 +112,6 @@ $(function() {
|
|||
' jobDesc="'+ row.jobDesc +'" '+
|
||||
' author="'+ row.author +'" '+
|
||||
' alarmEmail="'+ row.alarmEmail +'" '+
|
||||
' executorAddress="'+row.executorAddress +'" '+
|
||||
' executorHandler="'+row.executorHandler +'" '+
|
||||
' executorParam="'+ row.executorParam +'" '+
|
||||
' glueSwitch="'+ row.glueSwitch +'" '+
|
||||
|
@ -239,9 +237,6 @@ $(function() {
|
|||
},
|
||||
jobCron : {
|
||||
required : true
|
||||
},
|
||||
executorAddress : {
|
||||
required : true
|
||||
},
|
||||
executorHandler : {
|
||||
required : false
|
||||
|
@ -259,9 +254,6 @@ $(function() {
|
|||
},
|
||||
jobCron : {
|
||||
required :"请输入“Cron”."
|
||||
},
|
||||
executorAddress : {
|
||||
required :"请输入“执行器地址”."
|
||||
},
|
||||
executorHandler : {
|
||||
required : "请输入“jobHandler”."
|
||||
|
@ -312,19 +304,6 @@ $(function() {
|
|||
$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
|
||||
});
|
||||
|
||||
// Auto 注册模式
|
||||
$(".addressAuto").click(function(){
|
||||
var addressAuto = $(this).is(':checked');
|
||||
var $executorAddress = $(this).parents("form").find("input[name='executorAddress']");
|
||||
if (addressAuto) {
|
||||
$executorAddress.val("");
|
||||
$executorAddress.attr("readonly","readonly");
|
||||
} else {
|
||||
$executorAddress.val("");
|
||||
$executorAddress.removeAttr("readonly");
|
||||
}
|
||||
});
|
||||
|
||||
// GLUE模式开启
|
||||
$(".ifGLUE").click(function(){
|
||||
var ifGLUE = $(this).is(':checked');
|
||||
|
@ -350,23 +329,10 @@ $(function() {
|
|||
$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
|
||||
$("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
|
||||
$("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail"));
|
||||
$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
|
||||
$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
|
||||
$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
|
||||
$("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
|
||||
|
||||
// addressAuto
|
||||
var executorAddress = $(this).parent('p').attr("executorAddress");
|
||||
var $addressAuto = $("#updateModal .addressAuto");
|
||||
var $executorAddress = $("#updateModal .form input[name='executorAddress']");
|
||||
if (executorAddress) {
|
||||
$addressAuto.attr("checked", false);
|
||||
$executorAddress.removeAttr("readonly");
|
||||
} else {
|
||||
$addressAuto.attr("checked", true);
|
||||
$executorAddress.attr("readonly","readonly");
|
||||
}
|
||||
|
||||
// jobGroupTitle
|
||||
var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
|
||||
$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
|
||||
|
@ -401,9 +367,6 @@ $(function() {
|
|||
jobCron : {
|
||||
required : true
|
||||
},
|
||||
executorAddress : {
|
||||
required : false
|
||||
},
|
||||
executorHandler : {
|
||||
required : false
|
||||
},
|
||||
|
@ -421,9 +384,6 @@ $(function() {
|
|||
jobCron : {
|
||||
required :"请输入“Cron”."
|
||||
},
|
||||
executorAddress : {
|
||||
required :"请输入“执行器地址”."
|
||||
},
|
||||
executorHandler : {
|
||||
required : "请输入“jobHandler”."
|
||||
},
|
||||
|
|
|
@ -19,8 +19,8 @@ public class XxlJobInfoTest {
|
|||
|
||||
@Test
|
||||
public void pageList(){
|
||||
List<XxlJobInfo> list = xxlJobInfoDao.pageList(0, 20, null, null);
|
||||
int list_count = xxlJobInfoDao.pageListCount(0, 20, null, null);
|
||||
List<XxlJobInfo> list = xxlJobInfoDao.pageList(0, 20, 0, null);
|
||||
int list_count = xxlJobInfoDao.pageListCount(0, 20, 0, null);
|
||||
|
||||
System.out.println(list);
|
||||
System.out.println(list_count);
|
||||
|
@ -35,13 +35,13 @@ public class XxlJobInfoTest {
|
|||
System.out.println(count);
|
||||
System.out.println(info.getId());
|
||||
|
||||
XxlJobInfo item = xxlJobInfoDao.load(null ,"job_name");
|
||||
XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
|
||||
System.out.println(item);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update(){
|
||||
XxlJobInfo item = xxlJobInfoDao.load(null ,"job_name");
|
||||
XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
|
||||
|
||||
item.setJobCron("jobCron2");
|
||||
xxlJobInfoDao.update(item);
|
||||
|
|
|
@ -51,8 +51,8 @@ public class XxlJobLogTest {
|
|||
|
||||
@Test
|
||||
public void pageList(){
|
||||
List<XxlJobLog> list = xxlJobLogDao.pageList(0, 20, null, null, null, null);
|
||||
int list_count = xxlJobLogDao.pageListCount(0, 20, null, null, null, null);
|
||||
List<XxlJobLog> list = xxlJobLogDao.pageList(0, 20, 0, null, null, null);
|
||||
int list_count = xxlJobLogDao.pageListCount(0, 20, 0, null, null, null);
|
||||
|
||||
System.out.println(list);
|
||||
System.out.println(list_count);
|
||||
|
|
Loading…
Reference in New Issue