Browse Source

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

xueli.xue 8 years ago
parent
commit
965a0aedd6
28 changed files with 146 additions and 256 deletions
  1. 5 7
      db/tables_xxl_job.sql
  2. 9 11
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
  3. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
  4. 5 5
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
  5. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
  6. 2 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/callback/XxlJobLogCallbackServerHandler.java
  7. 7 15
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
  8. 3 12
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
  9. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
  10. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
  11. 16 15
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/DynamicSchedulerUtil.java
  12. 6 6
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
  13. 6 7
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
  14. 5 5
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogGlueDao.java
  15. 9 11
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
  16. 9 19
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
  17. 8 10
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogGlueDaoImpl.java
  18. 5 5
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
  19. 15 17
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
  20. 3 8
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
  21. 1 1
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
  22. 1 7
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
  23. 1 1
      xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl
  24. 14 36
      xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
  25. 1 1
      xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
  26. 0 40
      xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
  27. 4 4
      xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java
  28. 2 2
      xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java

+ 5 - 7
db/tables_xxl_job.sql

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

+ 9 - 11
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java

@@ -1,20 +1,18 @@
 package com.xxl.job.admin.controller;
 
-import java.util.List;
-
-import javax.annotation.Resource;
-
+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 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 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, "请输入备注");

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java

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

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java

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

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java

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

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/callback/XxlJobLogCallbackServerHandler.java

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

+ 7 - 15
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java

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

+ 3 - 12
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java

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

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java

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

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java

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

+ 16 - 15
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/DynamicSchedulerUtil.java

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

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java

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

+ 6 - 7
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java

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

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogGlueDao.java

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

+ 9 - 11
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java

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

+ 9 - 19
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java

@@ -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 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 com.xxl.job.admin.core.model.XxlJobLog;
-import com.xxl.job.admin.dao.IXxlJobLogDao;
+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);

+ 8 - 10
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogGlueDaoImpl.java

@@ -1,15 +1,13 @@
 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.XxlJobLogGlue;
+import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
 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 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);

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java

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

+ 15 - 17
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

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

+ 3 - 8
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml

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

+ 1 - 1
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml

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

+ 1 - 7
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml

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

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl

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

+ 14 - 36
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl

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

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl

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

+ 0 - 40
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js

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

+ 4 - 4
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java

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

+ 2 - 2
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java

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