Pārlūkot izejas kodu

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

xueli.xue 9 gadus atpakaļ
vecāks
revīzija
965a0aedd6
28 mainītis faili ar 146 papildinājumiem un 256 dzēšanām
  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 Parādīt failu

145
 
145
 
146
 
146
 
147
 
147
 
148
-CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
148
+CREATE TABLE XXL_JOB_QRTZ_TRIGGER_INFO (
149
   `id` int(11) NOT NULL AUTO_INCREMENT,
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
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
151
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
152
   `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
152
   `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
153
   `job_desc` varchar(255) NOT NULL,
153
   `job_desc` varchar(255) NOT NULL,
155
   `update_time` datetime DEFAULT NULL,
155
   `update_time` datetime DEFAULT NULL,
156
   `author` varchar(64) DEFAULT NULL COMMENT '作者',
156
   `author` varchar(64) DEFAULT NULL COMMENT '作者',
157
   `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
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
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
158
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
161
   `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
159
   `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
162
   `glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
160
   `glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
167
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
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
   `id` int(11) NOT NULL AUTO_INCREMENT,
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
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
171
   `job_name` varchar(255) NOT NULL COMMENT '任务名',
174
   `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
172
   `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
175
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
173
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
185
 
183
 
186
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOGGLUE (
184
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOGGLUE (
187
   `id` int(11) NOT NULL AUTO_INCREMENT,
185
   `id` int(11) NOT NULL AUTO_INCREMENT,
188
-  `job_group` varchar(255) NOT NULL,
186
+  `job_group` int(11) NOT NULL,
189
   `job_name` varchar(255) NOT NULL,
187
   `job_name` varchar(255) NOT NULL,
190
   `glue_source` text,
188
   `glue_source` text,
191
   `glue_remark` varchar(128) NOT NULL,
189
   `glue_remark` varchar(128) NOT NULL,

+ 9 - 11
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java Parādīt failu

1
 package com.xxl.job.admin.controller;
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
 import org.apache.commons.lang.StringUtils;
8
 import org.apache.commons.lang.StringUtils;
8
 import org.springframework.stereotype.Controller;
9
 import org.springframework.stereotype.Controller;
9
 import org.springframework.ui.Model;
10
 import org.springframework.ui.Model;
10
 import org.springframework.web.bind.annotation.RequestMapping;
11
 import org.springframework.web.bind.annotation.RequestMapping;
11
 import org.springframework.web.bind.annotation.ResponseBody;
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
  * job code controller
18
  * job code controller
30
 	private IXxlJobLogGlueDao xxlJobLogGlueDao;
28
 	private IXxlJobLogGlueDao xxlJobLogGlueDao;
31
 
29
 
32
 	@RequestMapping
30
 	@RequestMapping
33
-	public String index(Model model, String jobGroup, String jobName) {
31
+	public String index(Model model, int jobGroup, String jobName) {
34
 		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
32
 		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
35
 		List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.selectList(jobGroup, jobName);
33
 		List<XxlJobLogGlue> jobLogGlues = xxlJobLogGlueDao.selectList(jobGroup, jobName);
36
 		model.addAttribute("jobInfo", jobInfo);
34
 		model.addAttribute("jobInfo", jobInfo);
40
 	
38
 	
41
 	@RequestMapping("/save")
39
 	@RequestMapping("/save")
42
 	@ResponseBody
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
 		// valid
42
 		// valid
45
 		if (glueRemark==null) {
43
 		if (glueRemark==null) {
46
 			return new ReturnT<String>(500, "请输入备注");
44
 			return new ReturnT<String>(500, "请输入备注");

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java Parādīt failu

87
 	public ReturnT<String> remove(int id){
87
 	public ReturnT<String> remove(int id){
88
 
88
 
89
 		// valid
89
 		// valid
90
-		int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null);
90
+		int count = xxlJobInfoDao.pageListCount(0, 10, id, null);
91
 		if (count > 0) {
91
 		if (count > 0) {
92
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
92
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
93
 		}
93
 		}

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java Parādīt failu

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

65
 	@ResponseBody
65
 	@ResponseBody
66
 	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
66
 	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
67
 			@RequestParam(required = false, defaultValue = "10") int length,
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
 		// parse param
70
 		// parse param
71
 		Date triggerTimeStart = null;
71
 		Date triggerTimeStart = null;
161
 		RequestModel requestModel = new RequestModel();
161
 		RequestModel requestModel = new RequestModel();
162
 		requestModel.setTimestamp(System.currentTimeMillis());
162
 		requestModel.setTimestamp(System.currentTimeMillis());
163
 		requestModel.setAction(ActionRepository.KILL.name());
163
 		requestModel.setAction(ActionRepository.KILL.name());
164
-		requestModel.setJobGroup(log.getJobGroup());
164
+		requestModel.setJobGroup(String.valueOf(log.getJobGroup()));
165
 		requestModel.setJobName(log.getJobName());
165
 		requestModel.setJobName(log.getJobName());
166
 
166
 
167
 		ResponseModel responseModel = XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.addressToUrl(log.getExecutorAddress()), requestModel);
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 Parādīt failu

77
 				for (int i = 0; i < childJobKeys.length; i++) {
77
 				for (int i = 0; i < childJobKeys.length; i++) {
78
 					String[] jobKeyArr = childJobKeys[i].split("_");
78
 					String[] jobKeyArr = childJobKeys[i].split("_");
79
 					if (jobKeyArr!=null && jobKeyArr.length==2) {
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
 						if (childJobInfo!=null) {
81
 						if (childJobInfo!=null) {
82
 							try {
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
 								// add msg
85
 								// add msg
86
 								childTriggerMsg += MessageFormat.format("<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}",
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 Parādīt failu

37
 			throws JobExecutionException {
37
 			throws JobExecutionException {
38
 		JobKey jobKey = context.getTrigger().getJobKey();
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
 		// save log
41
 		// save log
42
 		XxlJobLog jobLog = new XxlJobLog();
42
 		XxlJobLog jobLog = new XxlJobLog();
43
 		jobLog.setJobGroup(jobInfo.getJobGroup());
43
 		jobLog.setJobGroup(jobInfo.getJobGroup());
57
 		RequestModel requestModel = new RequestModel();
57
 		RequestModel requestModel = new RequestModel();
58
 		requestModel.setTimestamp(System.currentTimeMillis());
58
 		requestModel.setTimestamp(System.currentTimeMillis());
59
 		requestModel.setAction(ActionRepository.RUN.name());
59
 		requestModel.setAction(ActionRepository.RUN.name());
60
-		requestModel.setJobGroup(jobInfo.getJobGroup());
60
+		requestModel.setJobGroup(String.valueOf(jobInfo.getJobGroup()));
61
 		requestModel.setJobName(jobInfo.getJobName());
61
 		requestModel.setJobName(jobInfo.getJobName());
62
 		requestModel.setExecutorHandler(jobInfo.getExecutorHandler());
62
 		requestModel.setExecutorHandler(jobInfo.getExecutorHandler());
63
 		requestModel.setExecutorParams(jobInfo.getExecutorParam());
63
 		requestModel.setExecutorParams(jobInfo.getExecutorParam());
67
 
67
 
68
 		// parse address
68
 		// parse address
69
 		List<String> addressList = new ArrayList<String>();
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
 		// failover trigger
75
 		// failover trigger
89
 		// update trigger info
81
 		// update trigger info
90
 		jobLog.setTriggerTime(new Date());
82
 		jobLog.setTriggerTime(new Date());
91
 		jobLog.setTriggerStatus(responseModel.getStatus());
83
 		jobLog.setTriggerStatus(responseModel.getStatus());
92
-		jobLog.setTriggerMsg(parseAddressMsg + responseModel.getMsg());
84
+		jobLog.setTriggerMsg(responseModel.getMsg());
93
 		DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
85
 		DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
94
 
86
 
95
 		// monitor triger
87
 		// monitor triger
107
 		 if (addressList==null || addressList.size() < 1) {
99
 		 if (addressList==null || addressList.size() < 1) {
108
 			ResponseModel result = new ResponseModel();
100
 			ResponseModel result = new ResponseModel();
109
 			result.setStatus(ResponseModel.FAIL);
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
 			return result;
103
 			return result;
112
 		} else if (addressList.size() == 1) {
104
 		} else if (addressList.size() == 1) {
113
 			 String address = addressList.get(0);
105
 			 String address = addressList.get(0);

+ 3 - 12
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java Parādīt failu

10
 	
10
 	
11
 	private int id;
11
 	private int id;
12
 	
12
 	
13
-	private String jobGroup;	// 任务组
13
+	private int jobGroup;		// 任务组 (执行器ID)
14
 	private String jobName;		// 任务名
14
 	private String jobName;		// 任务名
15
 	private String jobCron;		// 任务执行CRON表达式 【base on quartz】
15
 	private String jobCron;		// 任务执行CRON表达式 【base on quartz】
16
 	private String jobDesc;
16
 	private String jobDesc;
21
 	private String author;		// 负责人
21
 	private String author;		// 负责人
22
 	private String alarmEmail;	// 报警邮件
22
 	private String alarmEmail;	// 报警邮件
23
 
23
 
24
-	private String executorAddress;	// 执行器地址,有多个则逗号分隔
25
 	private String executorHandler;	// 执行器,任务Handler名称
24
 	private String executorHandler;	// 执行器,任务Handler名称
26
 	private String executorParam;	// 执行器,任务参数
25
 	private String executorParam;	// 执行器,任务参数
27
 	
26
 	
42
 		this.id = id;
41
 		this.id = id;
43
 	}
42
 	}
44
 
43
 
45
-	public String getJobGroup() {
44
+	public int getJobGroup() {
46
 		return jobGroup;
45
 		return jobGroup;
47
 	}
46
 	}
48
 
47
 
49
-	public void setJobGroup(String jobGroup) {
48
+	public void setJobGroup(int jobGroup) {
50
 		this.jobGroup = jobGroup;
49
 		this.jobGroup = jobGroup;
51
 	}
50
 	}
52
 
51
 
106
 		this.alarmEmail = alarmEmail;
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
 	public String getExecutorHandler() {
108
 	public String getExecutorHandler() {
118
 		return executorHandler;
109
 		return executorHandler;
119
 	}
110
 	}

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java Parādīt failu

11
 	private int id;
11
 	private int id;
12
 	
12
 	
13
 	// job info
13
 	// job info
14
-	private String jobGroup;
14
+	private int jobGroup;
15
 	private String jobName;
15
 	private String jobName;
16
 	
16
 	
17
 	private String executorAddress;	// 执行器地址,有多个则逗号分隔
17
 	private String executorAddress;	// 执行器地址,有多个则逗号分隔
34
 	public void setId(int id) {
34
 	public void setId(int id) {
35
 		this.id = id;
35
 		this.id = id;
36
 	}
36
 	}
37
-	public String getJobGroup() {
37
+	public int getJobGroup() {
38
 		return jobGroup;
38
 		return jobGroup;
39
 	}
39
 	}
40
-	public void setJobGroup(String jobGroup) {
40
+	public void setJobGroup(int jobGroup) {
41
 		this.jobGroup = jobGroup;
41
 		this.jobGroup = jobGroup;
42
 	}
42
 	}
43
 	public String getJobName() {
43
 	public String getJobName() {

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java Parādīt failu

8
 	
8
 	
9
 	private int id;
9
 	private int id;
10
 	
10
 	
11
-	private String jobGroup;
11
+	private int jobGroup;
12
 	private String jobName;
12
 	private String jobName;
13
 	
13
 	
14
 	private String glueSource;
14
 	private String glueSource;
22
 	public void setId(int id) {
22
 	public void setId(int id) {
23
 		this.id = id;
23
 		this.id = id;
24
 	}
24
 	}
25
-	public String getJobGroup() {
25
+	public int getJobGroup() {
26
 		return jobGroup;
26
 		return jobGroup;
27
 	}
27
 	}
28
-	public void setJobGroup(String jobGroup) {
28
+	public void setJobGroup(int jobGroup) {
29
 		this.jobGroup = jobGroup;
29
 		this.jobGroup = jobGroup;
30
 	}
30
 	}
31
 	public String getJobName() {
31
 	public String getJobName() {

+ 16 - 15
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/DynamicSchedulerUtil.java Parādīt failu

120
 	// fill job info
120
 	// fill job info
121
 	public static void fillJobInfo(XxlJobInfo jobInfo) {
121
 	public static void fillJobInfo(XxlJobInfo jobInfo) {
122
 		// TriggerKey : name + group
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
         try {
125
         try {
126
 			Trigger trigger = scheduler.getTrigger(triggerKey);
126
 			Trigger trigger = scheduler.getTrigger(triggerKey);
127
 
127
 
133
 				jobInfo.setJobCron(cronExpression);
133
 				jobInfo.setJobCron(cronExpression);
134
 			}
134
 			}
135
 
135
 
136
+			//JobKey jobKey = new JobKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
136
             //JobDetail jobDetail = scheduler.getJobDetail(jobKey);
137
             //JobDetail jobDetail = scheduler.getJobDetail(jobKey);
137
             //String jobClass = jobDetail.getJobClass().getName();
138
             //String jobClass = jobDetail.getJobClass().getName();
138
 
139
 
153
 
154
 
154
 	// addJob 新增
155
 	// addJob 新增
155
 	@SuppressWarnings("unchecked")
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
     	// TriggerKey : name + group
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
         // TriggerKey valid if_exists
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
             return false;
165
             return false;
165
         }
166
         }
166
         
167
         
167
         // CronTrigger : TriggerKey + cronExpression	// withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
168
         // CronTrigger : TriggerKey + cronExpression	// withMisfireHandlingInstructionDoNothing 忽略掉调度终止过程中忽略的调度
168
-        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
169
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
169
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
170
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
170
 
171
 
171
         // JobDetail : jobClass
172
         // JobDetail : jobClass
186
     }
187
     }
187
     
188
     
188
     // reschedule
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
     	// TriggerKey valid if_exists
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
             return false;
195
             return false;
195
         }
196
         }
196
         
197
         
197
         // TriggerKey : name + group
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
         // CronTrigger : TriggerKey + cronExpression
202
         // CronTrigger : TriggerKey + cronExpression
202
-        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing();
203
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
203
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
204
         CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
204
         
205
         
205
         //scheduler.rescheduleJob(triggerKey, cronTrigger);
206
         //scheduler.rescheduleJob(triggerKey, cronTrigger);
215
     	triggerSet.add(cronTrigger);
216
     	triggerSet.add(cronTrigger);
216
         
217
         
217
         scheduler.scheduleJob(jobDetail, triggerSet, true);
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
         return true;
220
         return true;
220
     }
221
     }
221
     
222
     

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java Parādīt failu

1
 package com.xxl.job.admin.dao;
1
 package com.xxl.job.admin.dao;
2
 
2
 
3
-import java.util.List;
4
-
5
 import com.xxl.job.admin.core.model.XxlJobInfo;
3
 import com.xxl.job.admin.core.model.XxlJobInfo;
6
 import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.model.XxlJobLog;
7
 
5
 
6
+import java.util.List;
7
+
8
 
8
 
9
 /**
9
 /**
10
  * job info
10
  * job info
12
  */
12
  */
13
 public interface IXxlJobInfoDao {
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
 	public int save(XxlJobInfo info);
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
 	public int update(XxlJobInfo item);
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
 	public List<XxlJobLog> getJobsByGroup(String jobGroup);
26
 	public List<XxlJobLog> getJobsByGroup(String jobGroup);
27
 }
27
 }

+ 6 - 7
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java Parādīt failu

1
 package com.xxl.job.admin.dao;
1
 package com.xxl.job.admin.dao;
2
 
2
 
3
+import com.xxl.job.admin.core.model.XxlJobLog;
4
+
3
 import java.util.Date;
5
 import java.util.Date;
4
 import java.util.List;
6
 import java.util.List;
5
 
7
 
6
-import com.xxl.job.admin.core.model.XxlJobLog;
7
-
8
 /**
8
 /**
9
  * job log
9
  * job log
10
  * @author xuxueli 2016-1-12 18:03:06
10
  * @author xuxueli 2016-1-12 18:03:06
11
  */
11
  */
12
 public interface IXxlJobLogDao {
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
 	public XxlJobLog load(int id);
17
 	public XxlJobLog load(int id);
18
-	public XxlJobLog loadByGroupAndName(String jobGroup, String jobName);
19
-	
18
+
20
 	public int save(XxlJobLog xxlJobLog);
19
 	public int save(XxlJobLog xxlJobLog);
21
 	public int updateTriggerInfo(XxlJobLog xxlJobLog);
20
 	public int updateTriggerInfo(XxlJobLog xxlJobLog);
22
 	public int updateHandleInfo(XxlJobLog xxlJobLog);
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 Parādīt failu

1
 package com.xxl.job.admin.dao;
1
 package com.xxl.job.admin.dao;
2
 
2
 
3
-import java.util.List;
4
-
5
 import com.xxl.job.admin.core.model.XxlJobLogGlue;
3
 import com.xxl.job.admin.core.model.XxlJobLogGlue;
6
 
4
 
5
+import java.util.List;
6
+
7
 /**
7
 /**
8
  * job log for glue
8
  * job log for glue
9
  * @author xuxueli 2016-5-19 18:04:56
9
  * @author xuxueli 2016-5-19 18:04:56
12
 	
12
 	
13
 	public int save(XxlJobLogGlue xxlJobLogGlue);
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 Parādīt failu

1
 package com.xxl.job.admin.dao.impl;
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
 import com.xxl.job.admin.core.model.XxlJobLog;
4
 import com.xxl.job.admin.core.model.XxlJobLog;
5
+import com.xxl.job.admin.dao.IXxlJobInfoDao;
9
 import org.mybatis.spring.SqlSessionTemplate;
6
 import org.mybatis.spring.SqlSessionTemplate;
10
 import org.springframework.stereotype.Repository;
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
  * job info
14
  * job info
23
 	public SqlSessionTemplate sqlSessionTemplate;
21
 	public SqlSessionTemplate sqlSessionTemplate;
24
 
22
 
25
 	@Override
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
 		HashMap<String, Object> params = new HashMap<String, Object>();
25
 		HashMap<String, Object> params = new HashMap<String, Object>();
28
 		params.put("offset", offset);
26
 		params.put("offset", offset);
29
 		params.put("pagesize", pagesize);
27
 		params.put("pagesize", pagesize);
34
 	}
32
 	}
35
 
33
 
36
 	@Override
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
 		HashMap<String, Object> params = new HashMap<String, Object>();
36
 		HashMap<String, Object> params = new HashMap<String, Object>();
39
 		params.put("offset", offset);
37
 		params.put("offset", offset);
40
 		params.put("pagesize", pagesize);
38
 		params.put("pagesize", pagesize);
50
 	}
48
 	}
51
 
49
 
52
 	@Override
50
 	@Override
53
-	public XxlJobInfo load(String jobGroup, String jobName) {
51
+	public XxlJobInfo load(int jobGroup, String jobName) {
54
 		HashMap<String, Object> params = new HashMap<String, Object>();
52
 		HashMap<String, Object> params = new HashMap<String, Object>();
55
 		params.put("jobGroup", jobGroup);
53
 		params.put("jobGroup", jobGroup);
56
 		params.put("jobName", jobName);
54
 		params.put("jobName", jobName);
64
 	}
62
 	}
65
 
63
 
66
 	@Override
64
 	@Override
67
-	public int delete(String jobGroup, String jobName) {
65
+	public int delete(int jobGroup, String jobName) {
68
 		HashMap<String, Object> params = new HashMap<String, Object>();
66
 		HashMap<String, Object> params = new HashMap<String, Object>();
69
 		params.put("jobGroup", jobGroup);
67
 		params.put("jobGroup", jobGroup);
70
 		params.put("jobName", jobName);
68
 		params.put("jobName", jobName);

+ 9 - 19
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java Parādīt failu

1
 package com.xxl.job.admin.dao.impl;
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
 import org.mybatis.spring.SqlSessionTemplate;
5
 import org.mybatis.spring.SqlSessionTemplate;
10
 import org.springframework.stereotype.Repository;
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
  * job log
14
  * job log
23
 	public SqlSessionTemplate sqlSessionTemplate;
21
 	public SqlSessionTemplate sqlSessionTemplate;
24
 
22
 
25
 	@Override
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
 		HashMap<String, Object> params = new HashMap<String, Object>();
25
 		HashMap<String, Object> params = new HashMap<String, Object>();
28
 		params.put("offset", offset);
26
 		params.put("offset", offset);
29
 		params.put("pagesize", pagesize);
27
 		params.put("pagesize", pagesize);
36
 	}
34
 	}
37
 
35
 
38
 	@Override
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
 		HashMap<String, Object> params = new HashMap<String, Object>();
38
 		HashMap<String, Object> params = new HashMap<String, Object>();
41
 		params.put("offset", offset);
39
 		params.put("offset", offset);
42
 		params.put("pagesize", pagesize);
40
 		params.put("pagesize", pagesize);
52
 	public XxlJobLog load(int id) {
50
 	public XxlJobLog load(int id) {
53
 		return sqlSessionTemplate.selectOne("XxlJobLogMapper.load", id);
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
 	@Override
54
 	@Override
65
 	public int save(XxlJobLog xxlJobLog) {
55
 	public int save(XxlJobLog xxlJobLog) {
83
 	}
73
 	}
84
 
74
 
85
 	@Override
75
 	@Override
86
-	public int delete(String jobGroup, String jobName) {
76
+	public int delete(int jobGroup, String jobName) {
87
 		HashMap<String, Object> params = new HashMap<String, Object>();
77
 		HashMap<String, Object> params = new HashMap<String, Object>();
88
 		params.put("jobGroup", jobGroup);
78
 		params.put("jobGroup", jobGroup);
89
 		params.put("jobName", jobName);
79
 		params.put("jobName", jobName);

+ 8 - 10
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogGlueDaoImpl.java Parādīt failu

1
 package com.xxl.job.admin.dao.impl;
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
 import org.mybatis.spring.SqlSessionTemplate;
5
 import org.mybatis.spring.SqlSessionTemplate;
9
 import org.springframework.stereotype.Repository;
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
  * job log for glue
13
  * job log for glue
27
 	}
25
 	}
28
 
26
 
29
 	@Override
27
 	@Override
30
-	public List<XxlJobLogGlue> selectList(String jobGroup, String jobName) {
28
+	public List<XxlJobLogGlue> selectList(int jobGroup, String jobName) {
31
 		HashMap<String, Object> params = new HashMap<String, Object>();
29
 		HashMap<String, Object> params = new HashMap<String, Object>();
32
 		params.put("jobGroup", jobGroup);
30
 		params.put("jobGroup", jobGroup);
33
 		params.put("jobName", jobName);
31
 		params.put("jobName", jobName);
35
 	}
33
 	}
36
 
34
 
37
 	@Override
35
 	@Override
38
-	public int removeOld(String jobGroup, String jobName, int limit) {
36
+	public int removeOld(int jobGroup, String jobName, int limit) {
39
 		HashMap<String, Object> params = new HashMap<String, Object>();
37
 		HashMap<String, Object> params = new HashMap<String, Object>();
40
 		params.put("jobGroup", jobGroup);
38
 		params.put("jobGroup", jobGroup);
41
 		params.put("jobName", jobName);
39
 		params.put("jobName", jobName);
44
 	}
42
 	}
45
 
43
 
46
 	@Override
44
 	@Override
47
-	public int delete(String jobGroup, String jobName) {
45
+	public int delete(int jobGroup, String jobName) {
48
 		HashMap<String, Object> params = new HashMap<String, Object>();
46
 		HashMap<String, Object> params = new HashMap<String, Object>();
49
 		params.put("jobGroup", jobGroup);
47
 		params.put("jobGroup", jobGroup);
50
 		params.put("jobName", jobName);
48
 		params.put("jobName", jobName);

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java Parādīt failu

11
  */
11
  */
12
 public interface IXxlJobService {
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
 	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
16
 	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
17
 			String executorAddress,	String executorHandler, String executorParam,
17
 			String executorAddress,	String executorHandler, String executorParam,
20
 	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
20
 	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
21
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
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 Parādīt failu

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

+ 3 - 8
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml Parādīt failu

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

+ 1 - 1
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml Parādīt failu

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

+ 1 - 7
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml Parādīt failu

83
 		FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
83
 		FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
84
 		WHERE t.id = #{id}
84
 		WHERE t.id = #{id}
85
 	</select>
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
 	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
88
 	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
95
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
89
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl Parādīt failu

41
                                         <th name="appName" >AppName</th>
41
                                         <th name="appName" >AppName</th>
42
                                         <th name="title" >名称</th>
42
                                         <th name="title" >名称</th>
43
 					                  	<th name="order" >排序</th>
43
 					                  	<th name="order" >排序</th>
44
-                                        <th name="registryList" >OnLine</th>
44
+                                        <th name="registryList" >OnLine 机器</th>
45
                                         <th name="operate" >操作</th>
45
                                         <th name="operate" >操作</th>
46
 					                </tr>
46
 					                </tr>
47
 				                </thead>
47
 				                </thead>

+ 14 - 36
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl Parādīt failu

78
                                         <th name="childJobKey" >任务Key</th>
78
                                         <th name="childJobKey" >任务Key</th>
79
 					                  	<th name="jobDesc" >描述</th>
79
 					                  	<th name="jobDesc" >描述</th>
80
 					                  	<th name="jobCron" >Cron</th>
80
 					                  	<th name="jobCron" >Cron</th>
81
-					                  	<th name="executorAddress" >执行器地址</th>
82
                                         <th name="executorHandler" >JobJandler</th>
81
                                         <th name="executorHandler" >JobJandler</th>
83
 					                  	<th name="executorParam" >任务参数</th>
82
 					                  	<th name="executorParam" >任务参数</th>
84
 					                  	<th name="addTime" >新增时间</th>
83
 					                  	<th name="addTime" >新增时间</th>
122
 		            			</#list>
121
 		            			</#list>
123
 		                  	</select>
122
 		                  	</select>
124
 						</div>
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
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
125
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
127
 					</div>
126
 					</div>
128
 					<div class="form-group">
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
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
128
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
141
                         <div class="col-sm-4">
129
                         <div class="col-sm-4">
142
                             <div class="input-group">
130
                             <div class="input-group">
148
 						<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
136
 						<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
149
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
137
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
150
 					</div>
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
 					<div class="form-group">
145
 					<div class="form-group">
152
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
146
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
153
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
147
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
154
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
148
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
155
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
149
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
156
 					</div>
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
                     <hr>
151
                     <hr>
162
 					<div class="form-group">
152
 					<div class="form-group">
163
 						<div class="col-sm-offset-3 col-sm-6">
153
 						<div class="col-sm-offset-3 col-sm-6">
206
                         <div class="col-sm-4">
196
                         <div class="col-sm-4">
207
 							<input type="text" class="form-control jobGroupTitle" maxlength="50" readonly >
197
 							<input type="text" class="form-control jobGroupTitle" maxlength="50" readonly >
208
 						</div>
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
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
200
                         <div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
211
 					</div>
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
                     <div class="form-group">
202
                     <div class="form-group">
224
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
203
                         <label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
225
                         <div class="col-sm-4">
204
                         <div class="col-sm-4">
232
                         <label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
211
                         <label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
233
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
212
                         <div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
234
                     </div>
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
 					<div class="form-group">
220
 					<div class="form-group">
236
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
221
 						<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
237
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
222
 						<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
238
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
223
                         <label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
239
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
224
                         <div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
240
 					</div>
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
 					<hr>
226
 					<hr>
246
 					<div class="form-group">
227
 					<div class="form-group">
247
                         <div class="col-sm-offset-3 col-sm-6">
228
                         <div class="col-sm-offset-3 col-sm-6">
250
                             <input type="hidden" name="jobGroup" >
231
                             <input type="hidden" name="jobGroup" >
251
                             <input type="hidden" name="jobName" >
232
                             <input type="hidden" name="jobName" >
252
 						</div>
233
 						</div>
253
-                        <div class="col-sm-offset-0 col-sm-3">
254
-                            启动注册&nbsp;<input type="checkbox" class="ifAppName" >
255
-                        </div>
256
 					</div>
234
 					</div>
257
 				</form>
235
 				</form>
258
          	</div>
236
          	</div>

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl Parādīt failu

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

+ 0 - 40
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js Parādīt failu

45
 					},
45
 					},
46
 	                { "data": 'jobDesc', "visible" : true},
46
 	                { "data": 'jobDesc', "visible" : true},
47
 	                { "data": 'jobCron', "visible" : true},
47
 	                { "data": 'jobCron', "visible" : true},
48
-	                { "data": 'executorAddress', "visible" : false},
49
 					{
48
 					{
50
 						"data": 'executorHandler',
49
 						"data": 'executorHandler',
51
 						"visible" : true,
50
 						"visible" : true,
113
 									' jobDesc="'+ row.jobDesc +'" '+
112
 									' jobDesc="'+ row.jobDesc +'" '+
114
 									' author="'+ row.author +'" '+
113
 									' author="'+ row.author +'" '+
115
 									' alarmEmail="'+ row.alarmEmail +'" '+
114
 									' alarmEmail="'+ row.alarmEmail +'" '+
116
-									' executorAddress="'+row.executorAddress +'" '+
117
 									' executorHandler="'+row.executorHandler +'" '+
115
 									' executorHandler="'+row.executorHandler +'" '+
118
 									' executorParam="'+ row.executorParam +'" '+
116
 									' executorParam="'+ row.executorParam +'" '+
119
 									' glueSwitch="'+ row.glueSwitch +'" '+
117
 									' glueSwitch="'+ row.glueSwitch +'" '+
240
             jobCron : {
238
             jobCron : {
241
             	required : true
239
             	required : true
242
             },
240
             },
243
-            executorAddress : {
244
-            	required : true
245
-            },
246
 			executorHandler : {
241
 			executorHandler : {
247
 				required : false
242
 				required : false
248
 			},
243
 			},
260
             jobCron : {
255
             jobCron : {
261
             	required :"请输入“Cron”."
256
             	required :"请输入“Cron”."
262
             },
257
             },
263
-            executorAddress : {
264
-            	required :"请输入“执行器地址”."
265
-            },
266
 			executorHandler : {
258
 			executorHandler : {
267
 				required : "请输入“jobHandler”."
259
 				required : "请输入“jobHandler”."
268
 			},
260
 			},
312
 		$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
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
 	// GLUE模式开启
307
 	// GLUE模式开启
329
 	$(".ifGLUE").click(function(){
308
 	$(".ifGLUE").click(function(){
330
 		var ifGLUE = $(this).is(':checked');
309
 		var ifGLUE = $(this).is(':checked');
350
 		$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
329
 		$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
351
 		$("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
330
 		$("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
352
 		$("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail"));
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
 		$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
332
 		$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
355
 		$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
333
 		$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
356
         $("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
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
 		// jobGroupTitle
336
 		// jobGroupTitle
371
 		var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
337
 		var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
372
 		$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
338
 		$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
401
 			jobCron : {
367
 			jobCron : {
402
 				required : true
368
 				required : true
403
 			},
369
 			},
404
-			executorAddress : {
405
-				required : false
406
-			},
407
 			executorHandler : {
370
 			executorHandler : {
408
 				required : false
371
 				required : false
409
 			},
372
 			},
421
 			jobCron : {
384
 			jobCron : {
422
 				required :"请输入“Cron”."
385
 				required :"请输入“Cron”."
423
 			},
386
 			},
424
-			executorAddress : {
425
-				required :"请输入“执行器地址”."
426
-			},
427
 			executorHandler : {
387
 			executorHandler : {
428
 				required : "请输入“jobHandler”."
388
 				required : "请输入“jobHandler”."
429
 			},
389
 			},

+ 4 - 4
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java Parādīt failu

19
 	
19
 	
20
 	@Test
20
 	@Test
21
 	public void pageList(){
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
 		System.out.println(list);
25
 		System.out.println(list);
26
 		System.out.println(list_count);
26
 		System.out.println(list_count);
35
 		System.out.println(count);
35
 		System.out.println(count);
36
 		System.out.println(info.getId());
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
 		System.out.println(item);
39
 		System.out.println(item);
40
 	}
40
 	}
41
 	
41
 	
42
 	@Test
42
 	@Test
43
 	public void update(){
43
 	public void update(){
44
-		XxlJobInfo item = xxlJobInfoDao.load(null ,"job_name");
44
+		XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
45
 		
45
 		
46
 		item.setJobCron("jobCron2");
46
 		item.setJobCron("jobCron2");
47
 		xxlJobInfoDao.update(item);
47
 		xxlJobInfoDao.update(item);

+ 2 - 2
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobLogTest.java Parādīt failu

51
 	
51
 	
52
 	@Test
52
 	@Test
53
 	public void pageList(){
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
 		System.out.println(list);
57
 		System.out.println(list);
58
 		System.out.println(list_count);
58
 		System.out.println(list_count);