提交 965a0aed authored 作者: xueli.xue's avatar xueli.xue

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

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