瀏覽代碼

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

xueli.xue 9 年之前
父節點
當前提交
965a0aedd6
共有 28 個文件被更改,包括 146 次插入256 次删除
  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
145 145
 
146 146
 
147 147
 
148
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
148
+CREATE TABLE XXL_JOB_QRTZ_TRIGGER_INFO (
149 149
   `id` int(11) NOT NULL AUTO_INCREMENT,
150
-  `job_group` varchar(255) NOT NULL COMMENT '任务组',
150
+  `job_group` int(11) NOT NULL COMMENT '任务组(执行器ID)',
151 151
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
152 152
   `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
153 153
   `job_desc` varchar(255) NOT NULL,
@@ -155,8 +155,6 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
155 155
   `update_time` datetime DEFAULT NULL,
156 156
   `author` varchar(64) DEFAULT NULL COMMENT '作者',
157 157
   `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
158
-  `executor_appname` varchar(255) DEFAULT NULL COMMENT '执行器对应的AppName',
159
-  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,有多个则逗号分隔',
160 158
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
161 159
   `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
162 160
   `glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
@@ -167,9 +165,9 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
167 165
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
168 166
 
169 167
 
170
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
168
+CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOG (
171 169
   `id` int(11) NOT NULL AUTO_INCREMENT,
172
-  `job_group` varchar(255) NOT NULL COMMENT '任务组',
170
+  `job_group` int(11) NOT NULL COMMENT '任务组',
173 171
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
174 172
   `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
175 173
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
@@ -185,7 +183,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
185 183
 
186 184
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOGGLUE (
187 185
   `id` int(11) NOT NULL AUTO_INCREMENT,
188
-  `job_group` varchar(255) NOT NULL,
186
+  `job_group` int(11) NOT NULL,
189 187
   `job_name` varchar(255) NOT NULL,
190 188
   `glue_source` text,
191 189
   `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 @@
1 1
 package com.xxl.job.admin.controller;
2 2
 
3
-import java.util.List;
4
-
5
-import javax.annotation.Resource;
6
-
3
+import com.xxl.job.admin.core.model.ReturnT;
4
+import com.xxl.job.admin.core.model.XxlJobInfo;
5
+import com.xxl.job.admin.core.model.XxlJobLogGlue;
6
+import com.xxl.job.admin.dao.IXxlJobInfoDao;
7
+import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
7 8
 import org.apache.commons.lang.StringUtils;
8 9
 import org.springframework.stereotype.Controller;
9 10
 import org.springframework.ui.Model;
10 11
 import org.springframework.web.bind.annotation.RequestMapping;
11 12
 import org.springframework.web.bind.annotation.ResponseBody;
12 13
 
13
-import com.xxl.job.admin.core.model.ReturnT;
14
-import com.xxl.job.admin.core.model.XxlJobInfo;
15
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
16
-import com.xxl.job.admin.dao.IXxlJobInfoDao;
17
-import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
14
+import javax.annotation.Resource;
15
+import java.util.List;
18 16
 
19 17
 /**
20 18
  * job code controller
@@ -30,7 +28,7 @@ public class JobCodeController {
30 28
 	private IXxlJobLogGlueDao xxlJobLogGlueDao;
31 29
 
32 30
 	@RequestMapping
33
-	public String index(Model model, String jobGroup, String jobName) {
31
+	public String index(Model model, int jobGroup, String jobName) {
34 32
 		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
35 33
 		List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.selectList(jobGroup, jobName);
36 34
 		model.addAttribute("jobInfo", jobInfo);
@@ -40,7 +38,7 @@ public class JobCodeController {
40 38
 	
41 39
 	@RequestMapping("/save")
42 40
 	@ResponseBody
43
-	public ReturnT<String> save(Model model, String jobGroup, String jobName, String glueSource, String glueRemark) {
41
+	public ReturnT<String> save(Model model, int jobGroup, String jobName, String glueSource, String glueRemark) {
44 42
 		// valid
45 43
 		if (glueRemark==null) {
46 44
 			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 {
87 87
 	public ReturnT<String> remove(int id){
88 88
 
89 89
 		// valid
90
-		int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null);
90
+		int count = xxlJobInfoDao.pageListCount(0, 10, id, null);
91 91
 		if (count > 0) {
92 92
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
93 93
 		}

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java 查看文件

@@ -41,7 +41,7 @@ public class JobInfoController {
41 41
 	@ResponseBody
42 42
 	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
43 43
 			@RequestParam(required = false, defaultValue = "10") int length,
44
-			String jobGroup, String executorHandler, String filterTime) {
44
+			int jobGroup, String executorHandler, String filterTime) {
45 45
 		
46 46
 		return xxlJobService.pageList(start, length, jobGroup, executorHandler, filterTime);
47 47
 	}
@@ -69,25 +69,25 @@ public class JobInfoController {
69 69
 	
70 70
 	@RequestMapping("/remove")
71 71
 	@ResponseBody
72
-	public ReturnT<String> remove(String jobGroup, String jobName) {
72
+	public ReturnT<String> remove(int jobGroup, String jobName) {
73 73
 		return xxlJobService.remove(jobGroup, jobName);
74 74
 	}
75 75
 	
76 76
 	@RequestMapping("/pause")
77 77
 	@ResponseBody
78
-	public ReturnT<String> pause(String jobGroup, String jobName) {
78
+	public ReturnT<String> pause(int jobGroup, String jobName) {
79 79
 		return xxlJobService.pause(jobGroup, jobName);
80 80
 	}
81 81
 	
82 82
 	@RequestMapping("/resume")
83 83
 	@ResponseBody
84
-	public ReturnT<String> resume(String jobGroup, String jobName) {
84
+	public ReturnT<String> resume(int jobGroup, String jobName) {
85 85
 		return xxlJobService.resume(jobGroup, jobName);
86 86
 	}
87 87
 	
88 88
 	@RequestMapping("/trigger")
89 89
 	@ResponseBody
90
-	public ReturnT<String> triggerJob(String jobGroup, String jobName) {
90
+	public ReturnT<String> triggerJob(int jobGroup, String jobName) {
91 91
 		return xxlJobService.triggerJob(jobGroup, jobName);
92 92
 	}
93 93
 	

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java 查看文件

@@ -65,7 +65,7 @@ public class JobLogController {
65 65
 	@ResponseBody
66 66
 	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
67 67
 			@RequestParam(required = false, defaultValue = "10") int length,
68
-			String jobGroup, String jobName, String filterTime) {
68
+			int jobGroup, String jobName, String filterTime) {
69 69
 		
70 70
 		// parse param
71 71
 		Date triggerTimeStart = null;
@@ -161,7 +161,7 @@ public class JobLogController {
161 161
 		RequestModel requestModel = new RequestModel();
162 162
 		requestModel.setTimestamp(System.currentTimeMillis());
163 163
 		requestModel.setAction(ActionRepository.KILL.name());
164
-		requestModel.setJobGroup(log.getJobGroup());
164
+		requestModel.setJobGroup(String.valueOf(log.getJobGroup()));
165 165
 		requestModel.setJobName(log.getJobName());
166 166
 
167 167
 		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 {
77 77
 				for (int i = 0; i < childJobKeys.length; i++) {
78 78
 					String[] jobKeyArr = childJobKeys[i].split("_");
79 79
 					if (jobKeyArr!=null && jobKeyArr.length==2) {
80
-						XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(jobKeyArr[0], jobKeyArr[1]);
80
+						XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKeyArr[0]), jobKeyArr[1]);
81 81
 						if (childJobInfo!=null) {
82 82
 							try {
83
-								boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), childJobInfo.getJobGroup());
83
+								boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), String.valueOf(childJobInfo.getJobGroup()));
84 84
 
85 85
 								// add msg
86 86
 								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 {
37 37
 			throws JobExecutionException {
38 38
 		JobKey jobKey = context.getTrigger().getJobKey();
39 39
 		
40
-		XxlJobInfo jobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(jobKey.getGroup(), jobKey.getName());
40
+		XxlJobInfo jobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(Integer.valueOf(jobKey.getGroup()), jobKey.getName());
41 41
 		// save log
42 42
 		XxlJobLog jobLog = new XxlJobLog();
43 43
 		jobLog.setJobGroup(jobInfo.getJobGroup());
@@ -57,7 +57,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
57 57
 		RequestModel requestModel = new RequestModel();
58 58
 		requestModel.setTimestamp(System.currentTimeMillis());
59 59
 		requestModel.setAction(ActionRepository.RUN.name());
60
-		requestModel.setJobGroup(jobInfo.getJobGroup());
60
+		requestModel.setJobGroup(String.valueOf(jobInfo.getJobGroup()));
61 61
 		requestModel.setJobName(jobInfo.getJobName());
62 62
 		requestModel.setExecutorHandler(jobInfo.getExecutorHandler());
63 63
 		requestModel.setExecutorParams(jobInfo.getExecutorParam());
@@ -67,17 +67,9 @@ public class RemoteHttpJobBean extends QuartzJobBean {
67 67
 
68 68
 		// parse address
69 69
 		List<String> addressList = new ArrayList<String>();
70
-		String parseAddressMsg = null;
71
-		if (StringUtils.isNotBlank(jobInfo.getExecutorAddress())) {
72
-			List<String> addressArr = Arrays.asList(jobInfo.getExecutorAddress().split(","));
73
-			addressList.addAll(addressArr);
74
-			parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
75
-		} else {
76
-			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
77
-			if (group!=null) {
78
-				addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
79
-			}
80
-			parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
70
+		XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
71
+		if (group!=null) {
72
+			addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
81 73
 		}
82 74
 
83 75
 		// failover trigger
@@ -89,7 +81,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
89 81
 		// update trigger info
90 82
 		jobLog.setTriggerTime(new Date());
91 83
 		jobLog.setTriggerStatus(responseModel.getStatus());
92
-		jobLog.setTriggerMsg(parseAddressMsg + responseModel.getMsg());
84
+		jobLog.setTriggerMsg(responseModel.getMsg());
93 85
 		DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
94 86
 
95 87
 		// monitor triger
@@ -107,7 +99,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
107 99
 		 if (addressList==null || addressList.size() < 1) {
108 100
 			ResponseModel result = new ResponseModel();
109 101
 			result.setStatus(ResponseModel.FAIL);
110
-			result.setMsg( "Trigger error, <br>>>>address list is null <br><hr>" );
102
+			result.setMsg( "Trigger error, <br>>>>[address] is null <br><hr>" );
111 103
 			return result;
112 104
 		} else if (addressList.size() == 1) {
113 105
 			 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 {
10 10
 	
11 11
 	private int id;
12 12
 	
13
-	private String jobGroup;	// 任务组
13
+	private int jobGroup;		// 任务组 (执行器ID)
14 14
 	private String jobName;		// 任务名
15 15
 	private String jobCron;		// 任务执行CRON表达式 【base on quartz】
16 16
 	private String jobDesc;
@@ -21,7 +21,6 @@ public class XxlJobInfo {
21 21
 	private String author;		// 负责人
22 22
 	private String alarmEmail;	// 报警邮件
23 23
 
24
-	private String executorAddress;	// 执行器地址,有多个则逗号分隔
25 24
 	private String executorHandler;	// 执行器,任务Handler名称
26 25
 	private String executorParam;	// 执行器,任务参数
27 26
 	
@@ -42,11 +41,11 @@ public class XxlJobInfo {
42 41
 		this.id = id;
43 42
 	}
44 43
 
45
-	public String getJobGroup() {
44
+	public int getJobGroup() {
46 45
 		return jobGroup;
47 46
 	}
48 47
 
49
-	public void setJobGroup(String jobGroup) {
48
+	public void setJobGroup(int jobGroup) {
50 49
 		this.jobGroup = jobGroup;
51 50
 	}
52 51
 
@@ -106,14 +105,6 @@ public class XxlJobInfo {
106 105
 		this.alarmEmail = alarmEmail;
107 106
 	}
108 107
 
109
-	public String getExecutorAddress() {
110
-		return executorAddress;
111
-	}
112
-
113
-	public void setExecutorAddress(String executorAddress) {
114
-		this.executorAddress = executorAddress;
115
-	}
116
-
117 108
 	public String getExecutorHandler() {
118 109
 		return executorHandler;
119 110
 	}

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java 查看文件

@@ -11,7 +11,7 @@ public class XxlJobLog {
11 11
 	private int id;
12 12
 	
13 13
 	// job info
14
-	private String jobGroup;
14
+	private int jobGroup;
15 15
 	private String jobName;
16 16
 	
17 17
 	private String executorAddress;	// 执行器地址,有多个则逗号分隔
@@ -34,10 +34,10 @@ public class XxlJobLog {
34 34
 	public void setId(int id) {
35 35
 		this.id = id;
36 36
 	}
37
-	public String getJobGroup() {
37
+	public int getJobGroup() {
38 38
 		return jobGroup;
39 39
 	}
40
-	public void setJobGroup(String jobGroup) {
40
+	public void setJobGroup(int jobGroup) {
41 41
 		this.jobGroup = jobGroup;
42 42
 	}
43 43
 	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 {
8 8
 	
9 9
 	private int id;
10 10
 	
11
-	private String jobGroup;
11
+	private int jobGroup;
12 12
 	private String jobName;
13 13
 	
14 14
 	private String glueSource;
@@ -22,10 +22,10 @@ public class XxlJobLogGlue {
22 22
 	public void setId(int id) {
23 23
 		this.id = id;
24 24
 	}
25
-	public String getJobGroup() {
25
+	public int getJobGroup() {
26 26
 		return jobGroup;
27 27
 	}
28
-	public void setJobGroup(String jobGroup) {
28
+	public void setJobGroup(int jobGroup) {
29 29
 		this.jobGroup = jobGroup;
30 30
 	}
31 31
 	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
120 120
 	// fill job info
121 121
 	public static void fillJobInfo(XxlJobInfo jobInfo) {
122 122
 		// TriggerKey : name + group
123
-        TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
124
-        JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
123
+        TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
124
+
125 125
         try {
126 126
 			Trigger trigger = scheduler.getTrigger(triggerKey);
127 127
 
@@ -133,6 +133,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
133 133
 				jobInfo.setJobCron(cronExpression);
134 134
 			}
135 135
 
136
+			//JobKey jobKey = new JobKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
136 137
             //JobDetail jobDetail = scheduler.getJobDetail(jobKey);
137 138
             //String jobClass = jobDetail.getJobClass().getName();
138 139
 
@@ -153,19 +154,19 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
153 154
 
154 155
 	// addJob 新增
155 156
 	@SuppressWarnings("unchecked")
156
-	public static boolean addJob(XxlJobInfo jobInfo) throws SchedulerException {
157
+	public static boolean addJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
157 158
     	// TriggerKey : name + group
158
-        TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
159
-        JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
159
+        TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
160
+        JobKey jobKey = new JobKey(jobName, jobGroup);
160 161
         
161 162
         // TriggerKey valid if_exists
162
-        if (checkExists(jobInfo.getJobName(), jobInfo.getJobGroup())) {
163
-            logger.info(">>>>>>>>> addJob fail, job already exist, jobInfo:{}", jobInfo);
163
+        if (checkExists(jobName, jobGroup)) {
164
+            logger.info(">>>>>>>>> addJob fail, job already exist, jobGroup:{}, jobName:{}", jobGroup, jobName);
164 165
             return false;
165 166
         }
166 167
         
167 168
         // CronTrigger : TriggerKey + cronExpression	// withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
168
-        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
169
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
169 170
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
170 171
 
171 172
         // JobDetail : jobClass
@@ -186,20 +187,20 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
186 187
     }
187 188
     
188 189
     // reschedule
189
-	public static boolean rescheduleJob(XxlJobInfo jobInfo) throws SchedulerException {
190
+	public static boolean rescheduleJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
190 191
     	
191 192
     	// TriggerKey valid if_exists
192
-        if (!checkExists(jobInfo.getJobName(), jobInfo.getJobGroup())) {
193
-        	logger.info(">>>>>>>>>>> rescheduleJob fail, job not exists, jobInfo:{}", jobInfo);
193
+        if (!checkExists(jobName, jobGroup)) {
194
+        	logger.info(">>>>>>>>>>> rescheduleJob fail, job not exists, JobGroup:{}, JobName:{}", jobGroup, jobName);
194 195
             return false;
195 196
         }
196 197
         
197 198
         // TriggerKey : name + group
198
-        TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), jobInfo.getJobGroup());
199
-        JobKey jobKey = new JobKey(jobInfo.getJobName(), jobInfo.getJobGroup());
199
+        TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
200
+        JobKey jobKey = new JobKey(jobName, jobGroup);
200 201
         
201 202
         // CronTrigger : TriggerKey + cronExpression
202
-        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
203
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
203 204
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
204 205
         
205 206
         //scheduler.rescheduleJob(triggerKey, cronTrigger);
@@ -215,7 +216,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
215 216
     	triggerSet.add(cronTrigger);
216 217
         
217 218
         scheduler.scheduleJob(jobDetail, triggerSet, true);
218
-        logger.info(">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}", jobInfo.getJobGroup(), jobInfo.getJobName());
219
+        logger.info(">>>>>>>>>>> resumeJob success, JobGroup:{}, JobName:{}", jobGroup, jobName);
219 220
         return true;
220 221
     }
221 222
     

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java 查看文件

@@ -1,10 +1,10 @@
1 1
 package com.xxl.job.admin.dao;
2 2
 
3
-import java.util.List;
4
-
5 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
6 4
 import com.xxl.job.admin.core.model.XxlJobLog;
7 5
 
6
+import java.util.List;
7
+
8 8
 
9 9
 /**
10 10
  * job info
@@ -12,16 +12,16 @@ import com.xxl.job.admin.core.model.XxlJobLog;
12 12
  */
13 13
 public interface IXxlJobInfoDao {
14 14
 
15
-	public List<XxlJobInfo> pageList(int offset, int pagesize, String jobGroup, String executorHandler);
16
-	public int pageListCount(int offset, int pagesize, String jobGroup, String executorHandler);
15
+	public List<XxlJobInfo> pageList(int offset, int pagesize, int jobGroup, String executorHandler);
16
+	public int pageListCount(int offset, int pagesize, int jobGroup, String executorHandler);
17 17
 	
18 18
 	public int save(XxlJobInfo info);
19 19
 	
20
-	public XxlJobInfo load(String jobGroup, String jobName);
20
+	public XxlJobInfo load(int jobGroup, String jobName);
21 21
 	
22 22
 	public int update(XxlJobInfo item);
23 23
 	
24
-	public int delete(String jobGroup, String jobName);
24
+	public int delete(int jobGroup, String jobName);
25 25
 
26 26
 	public List<XxlJobLog> getJobsByGroup(String jobGroup);
27 27
 }

+ 6 - 7
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java 查看文件

@@ -1,26 +1,25 @@
1 1
 package com.xxl.job.admin.dao;
2 2
 
3
+import com.xxl.job.admin.core.model.XxlJobLog;
4
+
3 5
 import java.util.Date;
4 6
 import java.util.List;
5 7
 
6
-import com.xxl.job.admin.core.model.XxlJobLog;
7
-
8 8
 /**
9 9
  * job log
10 10
  * @author xuxueli 2016-1-12 18:03:06
11 11
  */
12 12
 public interface IXxlJobLogDao {
13 13
 	
14
-	public List<XxlJobLog> pageList(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
15
-	public int pageListCount(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
14
+	public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
15
+	public int pageListCount(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd);
16 16
 	
17 17
 	public XxlJobLog load(int id);
18
-	public XxlJobLog loadByGroupAndName(String jobGroup, String jobName);
19
-	
18
+
20 19
 	public int save(XxlJobLog xxlJobLog);
21 20
 	public int updateTriggerInfo(XxlJobLog xxlJobLog);
22 21
 	public int updateHandleInfo(XxlJobLog xxlJobLog);
23 22
 	
24
-	public int delete(String jobGroup, String jobName);
23
+	public int delete(int jobGroup, String jobName);
25 24
 	
26 25
 }

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogGlueDao.java 查看文件

@@ -1,9 +1,9 @@
1 1
 package com.xxl.job.admin.dao;
2 2
 
3
-import java.util.List;
4
-
5 3
 import com.xxl.job.admin.core.model.XxlJobLogGlue;
6 4
 
5
+import java.util.List;
6
+
7 7
 /**
8 8
  * job log for glue
9 9
  * @author xuxueli 2016-5-19 18:04:56
@@ -12,10 +12,10 @@ public interface IXxlJobLogGlueDao {
12 12
 	
13 13
 	public int save(XxlJobLogGlue xxlJobLogGlue);
14 14
 	
15
-	public List<XxlJobLogGlue> selectList(String jobGroup, String jobName);
15
+	public List<XxlJobLogGlue> selectList(int jobGroup, String jobName);
16 16
 
17
-	public int removeOld(String jobGroup, String jobName, int limit);
17
+	public int removeOld(int jobGroup, String jobName, int limit);
18 18
 
19
-	public int delete(String jobGroup, String jobName);
19
+	public int delete(int jobGroup, String jobName);
20 20
 	
21 21
 }

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

@@ -1,16 +1,14 @@
1 1
 package com.xxl.job.admin.dao.impl;
2 2
 
3
-import java.util.HashMap;
4
-import java.util.List;
5
-
6
-import javax.annotation.Resource;
7
-
3
+import com.xxl.job.admin.core.model.XxlJobInfo;
8 4
 import com.xxl.job.admin.core.model.XxlJobLog;
5
+import com.xxl.job.admin.dao.IXxlJobInfoDao;
9 6
 import org.mybatis.spring.SqlSessionTemplate;
10 7
 import org.springframework.stereotype.Repository;
11 8
 
12
-import com.xxl.job.admin.core.model.XxlJobInfo;
13
-import com.xxl.job.admin.dao.IXxlJobInfoDao;
9
+import javax.annotation.Resource;
10
+import java.util.HashMap;
11
+import java.util.List;
14 12
 
15 13
 /**
16 14
  * job info
@@ -23,7 +21,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
23 21
 	public SqlSessionTemplate sqlSessionTemplate;
24 22
 
25 23
 	@Override
26
-	public List<XxlJobInfo> pageList(int offset, int pagesize, String jobGroup, String executorHandler) {
24
+	public List<XxlJobInfo> pageList(int offset, int pagesize, int jobGroup, String executorHandler) {
27 25
 		HashMap<String, Object> params = new HashMap<String, Object>();
28 26
 		params.put("offset", offset);
29 27
 		params.put("pagesize", pagesize);
@@ -34,7 +32,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
34 32
 	}
35 33
 
36 34
 	@Override
37
-	public int pageListCount(int offset, int pagesize, String jobGroup, String executorHandler) {
35
+	public int pageListCount(int offset, int pagesize, int jobGroup, String executorHandler) {
38 36
 		HashMap<String, Object> params = new HashMap<String, Object>();
39 37
 		params.put("offset", offset);
40 38
 		params.put("pagesize", pagesize);
@@ -50,7 +48,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
50 48
 	}
51 49
 
52 50
 	@Override
53
-	public XxlJobInfo load(String jobGroup, String jobName) {
51
+	public XxlJobInfo load(int jobGroup, String jobName) {
54 52
 		HashMap<String, Object> params = new HashMap<String, Object>();
55 53
 		params.put("jobGroup", jobGroup);
56 54
 		params.put("jobName", jobName);
@@ -64,7 +62,7 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
64 62
 	}
65 63
 
66 64
 	@Override
67
-	public int delete(String jobGroup, String jobName) {
65
+	public int delete(int jobGroup, String jobName) {
68 66
 		HashMap<String, Object> params = new HashMap<String, Object>();
69 67
 		params.put("jobGroup", jobGroup);
70 68
 		params.put("jobName", jobName);

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

@@ -1,16 +1,14 @@
1 1
 package com.xxl.job.admin.dao.impl;
2 2
 
3
-import java.util.Date;
4
-import java.util.HashMap;
5
-import java.util.List;
6
-
7
-import javax.annotation.Resource;
8
-
3
+import com.xxl.job.admin.core.model.XxlJobLog;
4
+import com.xxl.job.admin.dao.IXxlJobLogDao;
9 5
 import org.mybatis.spring.SqlSessionTemplate;
10 6
 import org.springframework.stereotype.Repository;
11 7
 
12
-import com.xxl.job.admin.core.model.XxlJobLog;
13
-import com.xxl.job.admin.dao.IXxlJobLogDao;
8
+import javax.annotation.Resource;
9
+import java.util.Date;
10
+import java.util.HashMap;
11
+import java.util.List;
14 12
 
15 13
 /**
16 14
  * job log
@@ -23,7 +21,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
23 21
 	public SqlSessionTemplate sqlSessionTemplate;
24 22
 
25 23
 	@Override
26
-	public List<XxlJobLog> pageList(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
24
+	public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
27 25
 		HashMap<String, Object> params = new HashMap<String, Object>();
28 26
 		params.put("offset", offset);
29 27
 		params.put("pagesize", pagesize);
@@ -36,7 +34,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
36 34
 	}
37 35
 
38 36
 	@Override
39
-	public int pageListCount(int offset, int pagesize, String jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
37
+	public int pageListCount(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
40 38
 		HashMap<String, Object> params = new HashMap<String, Object>();
41 39
 		params.put("offset", offset);
42 40
 		params.put("pagesize", pagesize);
@@ -52,14 +50,6 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
52 50
 	public XxlJobLog load(int id) {
53 51
 		return sqlSessionTemplate.selectOne("XxlJobLogMapper.load", id);
54 52
 	}
55
-	
56
-	@Override
57
-	public XxlJobLog loadByGroupAndName(String jobGroup, String jobName) {
58
-		HashMap<String, Object> params = new HashMap<String, Object>();
59
-		params.put("jobGroup", jobGroup);
60
-		params.put("jobName", jobName);
61
-		return sqlSessionTemplate.selectOne("XxlJobLogMapper.loadByGroupAndName", params);
62
-	}
63 53
 
64 54
 	@Override
65 55
 	public int save(XxlJobLog xxlJobLog) {
@@ -83,7 +73,7 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
83 73
 	}
84 74
 
85 75
 	@Override
86
-	public int delete(String jobGroup, String jobName) {
76
+	public int delete(int jobGroup, String jobName) {
87 77
 		HashMap<String, Object> params = new HashMap<String, Object>();
88 78
 		params.put("jobGroup", jobGroup);
89 79
 		params.put("jobName", jobName);

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

@@ -1,15 +1,13 @@
1 1
 package com.xxl.job.admin.dao.impl;
2 2
 
3
-import java.util.HashMap;
4
-import java.util.List;
5
-
6
-import javax.annotation.Resource;
7
-
3
+import com.xxl.job.admin.core.model.XxlJobLogGlue;
4
+import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
8 5
 import org.mybatis.spring.SqlSessionTemplate;
9 6
 import org.springframework.stereotype.Repository;
10 7
 
11
-import com.xxl.job.admin.core.model.XxlJobLogGlue;
12
-import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
8
+import javax.annotation.Resource;
9
+import java.util.HashMap;
10
+import java.util.List;
13 11
 
14 12
 /**
15 13
  * job log for glue
@@ -27,7 +25,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
27 25
 	}
28 26
 
29 27
 	@Override
30
-	public List<XxlJobLogGlue> selectList(String jobGroup, String jobName) {
28
+	public List<XxlJobLogGlue> selectList(int jobGroup, String jobName) {
31 29
 		HashMap<String, Object> params = new HashMap<String, Object>();
32 30
 		params.put("jobGroup", jobGroup);
33 31
 		params.put("jobName", jobName);
@@ -35,7 +33,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
35 33
 	}
36 34
 
37 35
 	@Override
38
-	public int removeOld(String jobGroup, String jobName, int limit) {
36
+	public int removeOld(int jobGroup, String jobName, int limit) {
39 37
 		HashMap<String, Object> params = new HashMap<String, Object>();
40 38
 		params.put("jobGroup", jobGroup);
41 39
 		params.put("jobName", jobName);
@@ -44,7 +42,7 @@ public class XxlJobLogGlueDaoImpl implements IXxlJobLogGlueDao {
44 42
 	}
45 43
 
46 44
 	@Override
47
-	public int delete(String jobGroup, String jobName) {
45
+	public int delete(int jobGroup, String jobName) {
48 46
 		HashMap<String, Object> params = new HashMap<String, Object>();
49 47
 		params.put("jobGroup", jobGroup);
50 48
 		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;
11 11
  */
12 12
 public interface IXxlJobService {
13 13
 	
14
-	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
14
+	public Map<String, Object> pageList(int start, int length, int jobGroup, String executorHandler, String filterTime);
15 15
 	
16 16
 	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
17 17
 			String executorAddress,	String executorHandler, String executorParam,
@@ -20,12 +20,12 @@ public interface IXxlJobService {
20 20
 	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
21 21
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
22 22
 	
23
-	public ReturnT<String> remove(String jobGroup, String jobName);
23
+	public ReturnT<String> remove(int jobGroup, String jobName);
24 24
 	
25
-	public ReturnT<String> pause(String jobGroup, String jobName);
25
+	public ReturnT<String> pause(int jobGroup, String jobName);
26 26
 	
27
-	public ReturnT<String> resume(String jobGroup, String jobName);
27
+	public ReturnT<String> resume(int jobGroup, String jobName);
28 28
 	
29
-	public ReturnT<String> triggerJob(String jobGroup, String jobName);
29
+	public ReturnT<String> triggerJob(int jobGroup, String jobName);
30 30
 	
31 31
 }

+ 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 {
42 42
 	private IXxlJobLogGlueDao xxlJobLogGlueDao;
43 43
 	
44 44
 	@Override
45
-	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime) {
45
+	public Map<String, Object> pageList(int start, int length, int jobGroup, String executorHandler, String filterTime) {
46 46
 
47 47
 		// page list
48 48
 		List<XxlJobInfo> list = xxlJobInfoDao.pageList(start, length, jobGroup, executorHandler);
@@ -96,7 +96,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
96 96
 				if (childJobKeyArr.length!=2) {
97 97
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
98 98
 				}
99
-				XxlJobInfo childJobInfo = xxlJobInfoDao.load(childJobKeyArr[0], childJobKeyArr[1]);
99
+				XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
100 100
 				if (childJobInfo==null) {
101 101
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
102 102
 				}
@@ -116,13 +116,12 @@ public class XxlJobServiceImpl implements IXxlJobService {
116 116
 
117 117
 		// Backup to the database
118 118
 		XxlJobInfo jobInfo = new XxlJobInfo();
119
-		jobInfo.setJobGroup(String.valueOf(jobGroup));
119
+		jobInfo.setJobGroup(jobGroup);
120 120
 		jobInfo.setJobName(jobName);
121 121
 		jobInfo.setJobCron(jobCron);
122 122
 		jobInfo.setJobDesc(jobDesc);
123 123
 		jobInfo.setAuthor(author);
124 124
 		jobInfo.setAlarmEmail(alarmEmail);
125
-		jobInfo.setExecutorAddress(executorAddress);
126 125
 		jobInfo.setExecutorHandler(executorHandler);
127 126
 		jobInfo.setExecutorParam(executorParam);
128 127
 		jobInfo.setGlueSwitch(glueSwitch);
@@ -132,7 +131,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
132 131
 
133 132
 		try {
134 133
 			// add job 2 quartz
135
-			boolean result = DynamicSchedulerUtil.addJob(jobInfo);
134
+			boolean result = DynamicSchedulerUtil.addJob(String.valueOf(jobGroup), jobName, jobCron);
136 135
 			if (result) {
137 136
 				xxlJobInfoDao.save(jobInfo);
138 137
 				return ReturnT.SUCCESS;
@@ -181,7 +180,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
181 180
 				if (childJobKeyArr.length!=2) {
182 181
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
183 182
 				}
184
-				XxlJobInfo childJobInfo = xxlJobInfoDao.load(childJobKeyArr[0], childJobKeyArr[1]);
183
+				XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
185 184
 				if (childJobInfo==null) {
186 185
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
187 186
 				}
@@ -189,12 +188,11 @@ public class XxlJobServiceImpl implements IXxlJobService {
189 188
 		}
190 189
 
191 190
 		// stage job info
192
-		XxlJobInfo jobInfo = xxlJobInfoDao.load(String.valueOf(jobGroup), jobName);
191
+		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
193 192
 		jobInfo.setJobCron(jobCron);
194 193
 		jobInfo.setJobDesc(jobDesc);
195 194
 		jobInfo.setAuthor(author);
196 195
 		jobInfo.setAlarmEmail(alarmEmail);
197
-		jobInfo.setExecutorAddress(executorAddress);
198 196
 		jobInfo.setExecutorHandler(executorHandler);
199 197
 		jobInfo.setExecutorParam(executorParam);
200 198
 		jobInfo.setGlueSwitch(glueSwitch);
@@ -202,7 +200,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
202 200
 		
203 201
 		try {
204 202
 			// fresh quartz
205
-			boolean ret = DynamicSchedulerUtil.rescheduleJob(jobInfo);
203
+			boolean ret = DynamicSchedulerUtil.rescheduleJob(String.valueOf(jobGroup), jobName, jobCron);
206 204
 			if (ret) {
207 205
 				xxlJobInfoDao.update(jobInfo);
208 206
 				return ReturnT.SUCCESS;
@@ -216,9 +214,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
216 214
 	}
217 215
 
218 216
 	@Override
219
-	public ReturnT<String> remove(String jobGroup, String jobName) {
217
+	public ReturnT<String> remove(int jobGroup, String jobName) {
220 218
 		try {
221
-			DynamicSchedulerUtil.removeJob(jobName, jobGroup);
219
+			DynamicSchedulerUtil.removeJob(jobName, String.valueOf(jobGroup));
222 220
 			xxlJobInfoDao.delete(jobGroup, jobName);
223 221
 			xxlJobLogDao.delete(jobGroup, jobName);
224 222
 			xxlJobLogGlueDao.delete(jobGroup, jobName);
@@ -230,9 +228,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
230 228
 	}
231 229
 
232 230
 	@Override
233
-	public ReturnT<String> pause(String jobGroup, String jobName) {
231
+	public ReturnT<String> pause(int jobGroup, String jobName) {
234 232
 		try {
235
-			DynamicSchedulerUtil.pauseJob(jobName, jobGroup);	// jobStatus do not store
233
+			DynamicSchedulerUtil.pauseJob(jobName, String.valueOf(jobGroup));	// jobStatus do not store
236 234
 			return ReturnT.SUCCESS;
237 235
 		} catch (SchedulerException e) {
238 236
 			e.printStackTrace();
@@ -241,9 +239,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
241 239
 	}
242 240
 
243 241
 	@Override
244
-	public ReturnT<String> resume(String jobGroup, String jobName) {
242
+	public ReturnT<String> resume(int jobGroup, String jobName) {
245 243
 		try {
246
-			DynamicSchedulerUtil.resumeJob(jobName, jobGroup);
244
+			DynamicSchedulerUtil.resumeJob(jobName, String.valueOf(jobGroup));
247 245
 			return ReturnT.SUCCESS;
248 246
 		} catch (SchedulerException e) {
249 247
 			e.printStackTrace();
@@ -252,9 +250,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
252 250
 	}
253 251
 
254 252
 	@Override
255
-	public ReturnT<String> triggerJob(String jobGroup, String jobName) {
253
+	public ReturnT<String> triggerJob(int jobGroup, String jobName) {
256 254
 		try {
257
-			DynamicSchedulerUtil.triggerJob(jobName, jobGroup);
255
+			DynamicSchedulerUtil.triggerJob(jobName, String.valueOf(jobGroup));
258 256
 			return ReturnT.SUCCESS;
259 257
 		} catch (SchedulerException e) {
260 258
 			e.printStackTrace();

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

@@ -17,7 +17,6 @@
17 17
 	    <result column="author" property="author" />
18 18
 	    <result column="alarm_email" property="alarmEmail" />
19 19
 
20
-	    <result column="executor_address" property="executorAddress" />
21 20
 		<result column="executor_handler" property="executorHandler" />
22 21
 	    <result column="executor_param" property="executorParam" />
23 22
 	    
@@ -38,7 +37,6 @@
38 37
 		t.update_time,
39 38
 		t.author,
40 39
 		t.alarm_email,
41
-		t.executor_address,
42 40
 		t.executor_handler,
43 41
 		t.executor_param,
44 42
 		t.glue_switch,
@@ -51,7 +49,7 @@
51 49
 		SELECT <include refid="Base_Column_List" />
52 50
 		FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
53 51
 		<trim prefix="WHERE" prefixOverrides="AND | OR" >
54
-			<if test="jobGroup != null and jobGroup != ''">
52
+			<if test="jobGroup gt 0">
55 53
 				AND t.job_group = #{jobGroup}
56 54
 			</if>
57 55
 			<if test="executorHandler != null and executorHandler != ''">
@@ -66,7 +64,7 @@
66 64
 		SELECT count(1)
67 65
 		FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
68 66
 		<trim prefix="WHERE" prefixOverrides="AND | OR" >
69
-			<if test="jobGroup != null and jobGroup != ''">
67
+			<if test="jobGroup gt 0">
70 68
 				AND t.job_group = #{jobGroup}
71 69
 			</if>
72 70
 			<if test="executorHandler != null and executorHandler != ''">
@@ -85,7 +83,6 @@
85 83
 			update_time,
86 84
 			author,
87 85
 			alarm_email,
88
-			executor_address,
89 86
 			executor_handler,
90 87
 			executor_param,
91 88
 			glue_switch,
@@ -101,7 +98,6 @@
101 98
 			NOW(),
102 99
 			#{author},
103 100
 			#{alarmEmail},
104
-			#{executorAddress},
105 101
 			#{executorHandler},
106 102
 			#{executorParam},
107 103
 			#{glueSwitch},
@@ -129,7 +125,6 @@
129 125
 			update_time = NOW(),
130 126
 			author = #{author},
131 127
 			alarm_email = #{alarmEmail},
132
-			executor_address = #{executorAddress},
133 128
 			executor_handler = #{executorHandler},
134 129
 			executor_param = #{executorParam},
135 130
 			glue_switch = #{glueSwitch},
@@ -140,7 +135,7 @@
140 135
 			AND job_name = #{jobName}
141 136
 	</update>
142 137
 	
143
-	<delete id="delete" parameterType="java.lang.String">
138
+	<delete id="delete" parameterType="java.util.HashMap">
144 139
 		DELETE
145 140
 		FROM
146 141
 			XXL_JOB_QRTZ_TRIGGER_INFO

+ 1 - 1
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml 查看文件

@@ -48,7 +48,7 @@
48 48
 		SELECT <include refid="Base_Column_List" />
49 49
 		FROM XXL_JOB_QRTZ_TRIGGER_LOGGLUE AS t
50 50
 		<trim prefix="WHERE" prefixOverrides="AND | OR" >
51
-			<if test="jobGroup != null and jobGroup != ''">
51
+			<if test="jobGroup gt 0">
52 52
 				AND t.job_group = #{jobGroup}
53 53
 			</if>
54 54
 			<if test="jobName != null and jobName != ''">

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

@@ -83,13 +83,7 @@
83 83
 		FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
84 84
 		WHERE t.id = #{id}
85 85
 	</select>
86
-	
87
-	<select id="loadByGroupAndName" parameterType="java.util.HashMap" resultMap="XxlJobLog">
88
-		SELECT <include refid="Base_Column_List" />
89
-		FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
90
-		WHERE t.job_group = #{jobGroup}
91
-			AND t.job_name = #{jobName}
92
-	</select>
86
+
93 87
 	
94 88
 	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
95 89
 		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 @@
41 41
                                         <th name="appName" >AppName</th>
42 42
                                         <th name="title" >名称</th>
43 43
 					                  	<th name="order" >排序</th>
44
-                                        <th name="registryList" >OnLine</th>
44
+                                        <th name="registryList" >OnLine 机器</th>
45 45
                                         <th name="operate" >操作</th>
46 46
 					                </tr>
47 47
 				                </thead>

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

@@ -78,7 +78,6 @@
78 78
                                         <th name="childJobKey" >任务Key</th>
79 79
 					                  	<th name="jobDesc" >描述</th>
80 80
 					                  	<th name="jobCron" >Cron</th>
81
-					                  	<th name="executorAddress" >执行器地址</th>
82 81
                                         <th name="executorHandler" >JobJandler</th>
83 82
 					                  	<th name="executorParam" >任务参数</th>
84 83
 					                  	<th name="addTime" >新增时间</th>
@@ -122,21 +121,10 @@
122 121
 		            			</#list>
123 122
 		                  	</select>
124 123
 						</div>
125
-                        <label for="lastname" class="col-sm-2 control-label">描述<font color="red">*</font></label>
124
+                        <label for="lastname" class="col-sm-2 control-label">任务描述<font color="red">*</font></label>
126 125
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
127 126
 					</div>
128 127
 					<div class="form-group">
129
-						<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
130
-						<div class="col-sm-4">
131
-                            <div class="input-group">
132
-                                <input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" readonly >
133
-                                <span class="input-group-addon"><b>AUTO</b>&nbsp;<input type="checkbox" class="addressAuto" checked="checked" ></span>
134
-                            </div>
135
-						</div>
136
-                        <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
137
-                        <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
138
-					</div>
139
-					<div class="form-group">
140 128
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
141 129
                         <div class="col-sm-4">
142 130
                             <div class="input-group">
@@ -148,16 +136,18 @@
148 136
 						<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
149 137
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
150 138
 					</div>
139
+                    <div class="form-group">
140
+                        <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
141
+                        <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
142
+                        <label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
143
+                        <div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
144
+                    </div>
151 145
 					<div class="form-group">
152 146
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
153 147
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
154 148
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
155 149
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
156 150
 					</div>
157
-                    <div class="form-group">
158
-                        <label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
159
-                        <div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
160
-                    </div>
161 151
                     <hr>
162 152
 					<div class="form-group">
163 153
 						<div class="col-sm-offset-3 col-sm-6">
@@ -206,20 +196,9 @@ public class DemoGlueJobHandler extends IJobHandler {
206 196
                         <div class="col-sm-4">
207 197
 							<input type="text" class="form-control jobGroupTitle" maxlength="50" readonly >
208 198
 						</div>
209
-                        <label for="lastname" class="col-sm-2 control-label">描述<font color="red">*</font></label>
199
+                        <label for="lastname" class="col-sm-2 control-label">任务描述<font color="red">*</font></label>
210 200
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
211 201
 					</div>
212
-					<div class="form-group">
213
-						<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
214
-						<div class="col-sm-4">
215
-                            <div class="input-group">
216
-								<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" >
217
-								<span class="input-group-addon"><b>AUTO</b>&nbsp;<input type="checkbox" class="addressAuto" checked="checked" ></span>
218
-                            </div>
219
-						</div>
220
-                        <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
221
-                        <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
222
-					</div>
223 202
                     <div class="form-group">
224 203
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
225 204
                         <div class="col-sm-4">
@@ -232,16 +211,18 @@ public class DemoGlueJobHandler extends IJobHandler {
232 211
                         <label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
233 212
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
234 213
                     </div>
214
+                    <div class="form-group">
215
+                        <label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
216
+                        <div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
217
+                        <label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
218
+                        <div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
219
+                    </div>
235 220
 					<div class="form-group">
236 221
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
237 222
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
238 223
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
239 224
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
240 225
 					</div>
241
-                    <div class="form-group">
242
-                        <label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
243
-                        <div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key,如存在多个逗号分隔" maxlength="100" ></div>
244
-                    </div>
245 226
 					<hr>
246 227
 					<div class="form-group">
247 228
                         <div class="col-sm-offset-3 col-sm-6">
@@ -250,9 +231,6 @@ public class DemoGlueJobHandler extends IJobHandler {
250 231
                             <input type="hidden" name="jobGroup" >
251 232
                             <input type="hidden" name="jobName" >
252 233
 						</div>
253
-                        <div class="col-sm-offset-0 col-sm-3">
254
-                            启动注册&nbsp;<input type="checkbox" class="ifAppName" >
255
-                        </div>
256 234
 					</div>
257 235
 				</form>
258 236
          	</div>

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

@@ -36,7 +36,7 @@
36 36
  					<div class="input-group">
37 37
 	                	<span class="input-group-addon">执行器</span>
38 38
                 		<select class="form-control" id="jobGroup"  paramVal="${jobGroup}" >
39
-                            <option value="" selected>请选择</option>
39
+                            <option value="0" selected>请选择</option>
40 40
                 			<#list JobGroupList as group>
41 41
                 				<option value="${group.id}" <#if jobGroup == group.appName && false>selected</#if> >${group.title}</option>
42 42
                 			</#list>

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

@@ -45,7 +45,6 @@ $(function() {
45 45
 					},
46 46
 	                { "data": 'jobDesc', "visible" : true},
47 47
 	                { "data": 'jobCron', "visible" : true},
48
-	                { "data": 'executorAddress', "visible" : false},
49 48
 					{
50 49
 						"data": 'executorHandler',
51 50
 						"visible" : true,
@@ -113,7 +112,6 @@ $(function() {
113 112
 									' jobDesc="'+ row.jobDesc +'" '+
114 113
 									' author="'+ row.author +'" '+
115 114
 									' alarmEmail="'+ row.alarmEmail +'" '+
116
-									' executorAddress="'+row.executorAddress +'" '+
117 115
 									' executorHandler="'+row.executorHandler +'" '+
118 116
 									' executorParam="'+ row.executorParam +'" '+
119 117
 									' glueSwitch="'+ row.glueSwitch +'" '+
@@ -240,9 +238,6 @@ $(function() {
240 238
             jobCron : {
241 239
             	required : true
242 240
             },
243
-            executorAddress : {
244
-            	required : true
245
-            },
246 241
 			executorHandler : {
247 242
 				required : false
248 243
 			},
@@ -260,9 +255,6 @@ $(function() {
260 255
             jobCron : {
261 256
             	required :"请输入“Cron”."
262 257
             },
263
-            executorAddress : {
264
-            	required :"请输入“执行器地址”."
265
-            },
266 258
 			executorHandler : {
267 259
 				required : "请输入“jobHandler”."
268 260
 			},
@@ -312,19 +304,6 @@ $(function() {
312 304
 		$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
313 305
 	});
314 306
 
315
-	// Auto 注册模式
316
-	$(".addressAuto").click(function(){
317
-		var addressAuto = $(this).is(':checked');
318
-		var $executorAddress = $(this).parents("form").find("input[name='executorAddress']");
319
-		if (addressAuto) {
320
-			$executorAddress.val("");
321
-			$executorAddress.attr("readonly","readonly");
322
-		} else {
323
-			$executorAddress.val("");
324
-			$executorAddress.removeAttr("readonly");
325
-		}
326
-	});
327
-
328 307
 	// GLUE模式开启
329 308
 	$(".ifGLUE").click(function(){
330 309
 		var ifGLUE = $(this).is(':checked');
@@ -350,23 +329,10 @@ $(function() {
350 329
 		$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
351 330
 		$("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
352 331
 		$("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail"));
353
-		$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
354 332
 		$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
355 333
 		$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
356 334
         $("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
357 335
 
358
-		// addressAuto
359
-		var executorAddress = $(this).parent('p').attr("executorAddress");
360
-		var $addressAuto = $("#updateModal .addressAuto");
361
-		var $executorAddress = $("#updateModal .form input[name='executorAddress']");
362
-		if (executorAddress) {
363
-			$addressAuto.attr("checked", false);
364
-			$executorAddress.removeAttr("readonly");
365
-		} else {
366
-			$addressAuto.attr("checked", true);
367
-			$executorAddress.attr("readonly","readonly");
368
-		}
369
-
370 336
 		// jobGroupTitle
371 337
 		var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
372 338
 		$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
@@ -401,9 +367,6 @@ $(function() {
401 367
 			jobCron : {
402 368
 				required : true
403 369
 			},
404
-			executorAddress : {
405
-				required : false
406
-			},
407 370
 			executorHandler : {
408 371
 				required : false
409 372
 			},
@@ -421,9 +384,6 @@ $(function() {
421 384
 			jobCron : {
422 385
 				required :"请输入“Cron”."
423 386
 			},
424
-			executorAddress : {
425
-				required :"请输入“执行器地址”."
426
-			},
427 387
 			executorHandler : {
428 388
 				required : "请输入“jobHandler”."
429 389
 			},

+ 4 - 4
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java 查看文件

@@ -19,8 +19,8 @@ public class XxlJobInfoTest {
19 19
 	
20 20
 	@Test
21 21
 	public void pageList(){
22
-		List<XxlJobInfo> list = xxlJobInfoDao.pageList(0, 20, null, null);
23
-		int list_count = xxlJobInfoDao.pageListCount(0, 20, null, null);
22
+		List<XxlJobInfo> list = xxlJobInfoDao.pageList(0, 20, 0, null);
23
+		int list_count = xxlJobInfoDao.pageListCount(0, 20, 0, null);
24 24
 		
25 25
 		System.out.println(list);
26 26
 		System.out.println(list_count);
@@ -35,13 +35,13 @@ public class XxlJobInfoTest {
35 35
 		System.out.println(count);
36 36
 		System.out.println(info.getId());
37 37
 		
38
-		XxlJobInfo item = xxlJobInfoDao.load(null ,"job_name");
38
+		XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
39 39
 		System.out.println(item);
40 40
 	}
41 41
 	
42 42
 	@Test
43 43
 	public void update(){
44
-		XxlJobInfo item = xxlJobInfoDao.load(null ,"job_name");
44
+		XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
45 45
 		
46 46
 		item.setJobCron("jobCron2");
47 47
 		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 {
51 51
 	
52 52
 	@Test
53 53
 	public void pageList(){
54
-		List<XxlJobLog> list = xxlJobLogDao.pageList(0, 20, null, null, null, null);
55
-		int list_count = xxlJobLogDao.pageListCount(0, 20, null, null, null, null);
54
+		List<XxlJobLog> list = xxlJobLogDao.pageList(0, 20, 0, null, null, null);
55
+		int list_count = xxlJobLogDao.pageListCount(0, 20, 0, null, null, null);
56 56
 		
57 57
 		System.out.println(list);
58 58
 		System.out.println(list_count);