抛弃任务执行机器属性,执行地址统一改为从执行器获取(目前仅支持DB注册方式获取)

This commit is contained in:
xueli.xue 2016-10-03 18:41:32 +08:00
parent 354f6483b2
commit 965a0aedd6
28 changed files with 149 additions and 259 deletions

View File

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

View File

@ -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, "请输入备注");

View File

@ -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, "该分组使用中, 不可删除");
}

View File

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

View File

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

View File

@ -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}",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 != ''">

View File

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

View File

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

View File

@ -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>&nbsp;<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>&nbsp;<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">
启动注册&nbsp;<input type="checkbox" class="ifAppName" >
</div>
</div>
</form>
</div>

View File

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

View File

@ -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”."
},

View File

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

View File

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