Pārlūkot izejas kodu

底层关键数据调整:JobKey的group和name属性,改为采用执行器主键ID和任务主键ID

xueli.xue 8 gadus atpakaļ
vecāks
revīzija
d66bdc8811
33 mainītis faili ar 218 papildinājumiem un 336 dzēšanām
  1. 2 0
      README.md
  2. 5 7
      db/tables_xxl_job.sql
  3. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
  4. 8 8
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
  5. 18 14
      xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
  6. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/biz/AdminBizImpl.java
  7. 6 6
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java
  8. 2 11
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java
  9. 5 5
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java
  10. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java
  11. 4 2
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java
  12. 1 1
      xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java
  13. 2 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
  14. 3 3
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
  15. 3 17
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
  16. 6 9
      xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
  17. 4 4
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
  18. 41 57
      xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
  19. 9 23
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
  20. 13 14
      xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
  21. 1 2
      xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
  22. 8 8
      xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
  23. 6 10
      xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
  24. 9 25
      xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
  25. 4 4
      xxl-job-admin/src/test/java/com/xxl/job/dao/impl/XxlJobInfoTest.java
  26. 2 3
      xxl-job-core/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java
  27. 10 17
      xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
  28. 12 45
      xxl-job-core/src/main/java/com/xxl/job/core/biz/model/TriggerParam.java
  29. 9 9
      xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
  30. 11 11
      xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java
  31. 2 3
      xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/GlueLoader.java
  32. 3 3
      xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/impl/DbGlueLoader.java
  33. 4 6
      xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java

+ 2 - 0
README.md Parādīt failu

@@ -738,6 +738,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
738 738
 - 4、规范系统配置数据,通过配置文件统一管理;
739 739
 - 5、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
740 740
 - 6、执行器路由规则:第一个、循环、随机、顺序故障(默认)转移;
741
+- 7、底层扩展数据接口调整;
742
+- 8、新建任务默认为非运行状态;
741 743
 
742 744
 #### TODO LIST
743 745
 - 1、支持脚本JOB(源码或指定路径), 即shell/python/php等, 日志实时输出并支持在线监控;定制JobHandler实现;

+ 5 - 7
db/tables_xxl_job.sql Parādīt failu

@@ -147,8 +147,7 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
147 147
 
148 148
 CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
149 149
   `id` int(11) NOT NULL AUTO_INCREMENT,
150
-  `job_group` int(11) NOT NULL COMMENT '任务组(执行器ID)',
151
-  `job_name` varchar(255) NOT NULL COMMENT '任务名',
150
+  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
152 151
   `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
153 152
   `job_desc` varchar(255) NOT NULL,
154 153
   `add_time` datetime DEFAULT NULL,
@@ -167,8 +166,8 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
167 166
 
168 167
 CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
169 168
   `id` int(11) NOT NULL AUTO_INCREMENT,
170
-  `job_group` int(11) NOT NULL COMMENT '任务组',
171
-  `job_name` varchar(255) NOT NULL COMMENT '任务名',
169
+  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
170
+  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
172 171
   `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
173 172
   `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
174 173
   `executor_param` varchar(255) DEFAULT NULL COMMENT 'executor_param',
@@ -181,10 +180,9 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
181 180
   PRIMARY KEY (`id`)
182 181
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
183 182
 
184
-CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOGGLUE (
183
+CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOGGLUE` (
185 184
   `id` int(11) NOT NULL AUTO_INCREMENT,
186
-  `job_group` int(11) NOT NULL,
187
-  `job_name` varchar(255) NOT NULL,
185
+  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
188 186
   `glue_source` text,
189 187
   `glue_remark` varchar(128) NOT NULL,
190 188
   `add_time` timestamp NULL DEFAULT NULL,

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

@@ -63,7 +63,7 @@ public class JobCodeController {
63 63
 		xxlJobInfoDao.update(exists_jobInfo);
64 64
 
65 65
 		// remove code backup more than 30
66
-		xxlJobLogGlueDao.removeOld(exists_jobInfo.getId(), 3);
66
+		xxlJobLogGlueDao.removeOld(exists_jobInfo.getId(), 30);
67 67
 
68 68
 		return ReturnT.SUCCESS;
69 69
 	}

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

@@ -64,26 +64,26 @@ public class JobInfoController {
64 64
 	
65 65
 	@RequestMapping("/remove")
66 66
 	@ResponseBody
67
-	public ReturnT<String> remove(int jobGroup, String jobName) {
68
-		return xxlJobService.remove(jobGroup, jobName);
67
+	public ReturnT<String> remove(int id) {
68
+		return xxlJobService.remove(id);
69 69
 	}
70 70
 	
71 71
 	@RequestMapping("/pause")
72 72
 	@ResponseBody
73
-	public ReturnT<String> pause(int jobGroup, String jobName) {
74
-		return xxlJobService.pause(jobGroup, jobName);
73
+	public ReturnT<String> pause(int id) {
74
+		return xxlJobService.pause(id);
75 75
 	}
76 76
 	
77 77
 	@RequestMapping("/resume")
78 78
 	@ResponseBody
79
-	public ReturnT<String> resume(int jobGroup, String jobName) {
80
-		return xxlJobService.resume(jobGroup, jobName);
79
+	public ReturnT<String> resume(int id) {
80
+		return xxlJobService.resume(id);
81 81
 	}
82 82
 	
83 83
 	@RequestMapping("/trigger")
84 84
 	@ResponseBody
85
-	public ReturnT<String> triggerJob(int jobGroup, String jobName) {
86
-		return xxlJobService.triggerJob(jobGroup, jobName);
85
+	public ReturnT<String> triggerJob(int id) {
86
+		return xxlJobService.triggerJob(id);
87 87
 	}
88 88
 	
89 89
 }

+ 18 - 14
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java Parādīt failu

@@ -40,29 +40,33 @@ public class JobLogController {
40 40
 	public IXxlJobLogDao xxlJobLogDao;
41 41
 
42 42
 	@RequestMapping
43
-	public String index(Model model, String jobGroup, String jobName) {
43
+	public String index(Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) {
44 44
 
45
-		// 任务组
45
+		// 执行器列表
46 46
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();
47
-
48
-		model.addAttribute("jobGroup", jobGroup);
49
-		model.addAttribute("jobName", jobName);
50 47
 		model.addAttribute("JobGroupList", jobGroupList);
48
+
49
+		// 任务
50
+		if (jobId > 0) {
51
+			XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
52
+			model.addAttribute("jobInfo", jobInfo);
53
+		}
54
+
51 55
 		return "joblog/joblog.index";
52 56
 	}
53 57
 
54 58
 	@RequestMapping("/getJobsByGroup")
55 59
 	@ResponseBody
56
-	public ReturnT<List<XxlJobLog>> listJobByGroup(String jobGroup){
57
-		List<XxlJobLog> list = xxlJobInfoDao.getJobsByGroup(jobGroup);
58
-		return new ReturnT<List<XxlJobLog>>(list);
60
+	public ReturnT<List<XxlJobInfo>> listJobByGroup(String jobGroup){
61
+		List<XxlJobInfo> list = xxlJobInfoDao.getJobsByGroup(jobGroup);
62
+		return new ReturnT<List<XxlJobInfo>>(list);
59 63
 	}
60 64
 	
61 65
 	@RequestMapping("/pageList")
62 66
 	@ResponseBody
63 67
 	public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,  
64 68
 			@RequestParam(required = false, defaultValue = "10") int length,
65
-			int jobGroup, String jobName, String filterTime) {
69
+			int jobGroup, int jobId, String filterTime) {
66 70
 		
67 71
 		// parse param
68 72
 		Date triggerTimeStart = null;
@@ -78,8 +82,8 @@ public class JobLogController {
78 82
 		}
79 83
 		
80 84
 		// page query
81
-		List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobName, triggerTimeStart, triggerTimeEnd);
82
-		int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobName, triggerTimeStart, triggerTimeEnd);
85
+		List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd);
86
+		int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd);
83 87
 		
84 88
 		// package result
85 89
 		Map<String, Object> maps = new HashMap<String, Object>();
@@ -130,8 +134,8 @@ public class JobLogController {
130 134
 	public ReturnT<String> logKill(int id){
131 135
 		// base check
132 136
 		XxlJobLog log = xxlJobLogDao.load(id);
133
-		XxlJobInfo jobInfo = xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
134
-		if (log == null || jobInfo==null) {
137
+		XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId());
138
+		if (jobInfo==null) {
135 139
 			return new ReturnT<String>(500, "参数异常");
136 140
 		}
137 141
 		if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
@@ -146,7 +150,7 @@ public class JobLogController {
146 150
 			e.printStackTrace();
147 151
 			return new ReturnT<String>(500, e.getMessage());
148 152
 		}
149
-		ReturnT<String> runResult = executorBiz.kill(String.valueOf(log.getJobGroup()), log.getJobName());
153
+		ReturnT<String> runResult = executorBiz.kill(jobInfo.getId());
150 154
 
151 155
 		if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
152 156
 			log.setHandleCode(ReturnT.FAIL_CODE);

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

@@ -32,17 +32,17 @@ public class AdminBizImpl implements AdminBiz {
32 32
         // trigger success, to trigger child job, and avoid repeat trigger child job
33 33
         String childTriggerMsg = null;
34 34
         if (ReturnT.SUCCESS_CODE==handleCallbackParam.getCode() && ReturnT.SUCCESS_CODE!=log.getHandleCode()) {
35
-            XxlJobInfo xxlJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
35
+            XxlJobInfo xxlJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(log.getJobId());
36 36
             if (xxlJobInfo!=null && StringUtils.isNotBlank(xxlJobInfo.getChildJobKey())) {
37 37
                 childTriggerMsg = "<hr>";
38 38
                 String[] childJobKeys = xxlJobInfo.getChildJobKey().split(",");
39 39
                 for (int i = 0; i < childJobKeys.length; i++) {
40 40
                     String[] jobKeyArr = childJobKeys[i].split("_");
41 41
                     if (jobKeyArr!=null && jobKeyArr.length==2) {
42
-                        XxlJobInfo childJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(Integer.valueOf(jobKeyArr[0]), jobKeyArr[1]);
42
+                        XxlJobInfo childJobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(Integer.valueOf(jobKeyArr[1]));
43 43
                         if (childJobInfo!=null) {
44 44
                             try {
45
-                                boolean ret = XxlJobDynamicScheduler.triggerJob(childJobInfo.getJobName(), String.valueOf(childJobInfo.getJobGroup()));
45
+                                boolean ret = XxlJobDynamicScheduler.triggerJob(String.valueOf(childJobInfo.getId()), String.valueOf(childJobInfo.getJobGroup()));
46 46
 
47 47
                                 // add msg
48 48
                                 childTriggerMsg += MessageFormat.format("<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}",

+ 6 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java Parādīt failu

@@ -35,12 +35,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
35 35
 	protected void executeInternal(JobExecutionContext context)
36 36
 			throws JobExecutionException {
37 37
 		JobKey jobKey = context.getTrigger().getJobKey();
38
-		
39
-		XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.load(Integer.valueOf(jobKey.getGroup()), jobKey.getName());
38
+		Integer jobId = Integer.valueOf(jobKey.getName());
39
+		XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(jobId);
40
+
40 41
 		// save log
41 42
 		XxlJobLog jobLog = new XxlJobLog();
42 43
 		jobLog.setJobGroup(jobInfo.getJobGroup());
43
-		jobLog.setJobName(jobInfo.getJobName());
44
+		jobLog.setJobId(jobInfo.getId());
44 45
 		XxlJobDynamicScheduler.xxlJobLogDao.save(jobLog);
45 46
 		logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
46 47
 
@@ -57,14 +58,13 @@ public class RemoteHttpJobBean extends QuartzJobBean {
57 58
 
58 59
 		// trigger request
59 60
 		TriggerParam triggerParam = new TriggerParam();
60
-		triggerParam.setJobGroup(String.valueOf(jobInfo.getJobGroup()));
61
-		triggerParam.setJobName(jobInfo.getJobName());
61
+		triggerParam.setJobId(jobInfo.getId());
62 62
 		triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
63 63
 		triggerParam.setExecutorParams(jobInfo.getExecutorParam());
64 64
 		triggerParam.setGlueSwitch((jobInfo.getGlueSwitch()==0)?false:true);
65
-		triggerParam.setLogAddress(adminAddressSet);
66 65
 		triggerParam.setLogId(jobLog.getId());
67 66
 		triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
67
+		triggerParam.setLogAddress(adminAddressSet);
68 68
 
69 69
 		// parse address
70 70
 		String groupAddressInfo = "注册方式:";

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

@@ -8,10 +8,9 @@ import java.util.Date;
8 8
  */
9 9
 public class XxlJobInfo {
10 10
 	
11
-	private int id;
11
+	private int id;				// 主键ID	    (JobKey.name)
12 12
 	
13
-	private int jobGroup;		// 任务组 (执行器ID)
14
-	private String jobName;		// 任务名
13
+	private int jobGroup;		// 执行器主键ID	(JobKey.group)
15 14
 	private String jobCron;		// 任务执行CRON表达式 【base on quartz】
16 15
 	private String jobDesc;
17 16
 	
@@ -50,14 +49,6 @@ public class XxlJobInfo {
50 49
 		this.jobGroup = jobGroup;
51 50
 	}
52 51
 
53
-	public String getJobName() {
54
-		return jobName;
55
-	}
56
-
57
-	public void setJobName(String jobName) {
58
-		this.jobName = jobName;
59
-	}
60
-
61 52
 	public String getJobCron() {
62 53
 		return jobCron;
63 54
 	}

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

@@ -12,7 +12,7 @@ public class XxlJobLog {
12 12
 	
13 13
 	// job info
14 14
 	private int jobGroup;
15
-	private String jobName;
15
+	private int jobId;
16 16
 
17 17
 	// execute info
18 18
 	private String executorAddress;
@@ -45,12 +45,12 @@ public class XxlJobLog {
45 45
 		this.jobGroup = jobGroup;
46 46
 	}
47 47
 
48
-	public String getJobName() {
49
-		return jobName;
48
+	public int getJobId() {
49
+		return jobId;
50 50
 	}
51 51
 
52
-	public void setJobName(String jobName) {
53
-		this.jobName = jobName;
52
+	public void setJobId(int jobId) {
53
+		this.jobId = jobId;
54 54
 	}
55 55
 
56 56
 	public String getExecutorAddress() {

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

@@ -7,7 +7,7 @@ package com.xxl.job.admin.core.model;
7 7
 public class XxlJobLogGlue {
8 8
 	
9 9
 	private int id;
10
-	private int jobId;
10
+	private int jobId;				// 任务主键ID
11 11
 	private String glueSource;
12 12
 	private String glueRemark;
13 13
 	private String addTime;

+ 4 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/schedule/XxlJobDynamicScheduler.java Parādīt failu

@@ -143,7 +143,9 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
143 143
 	// fill job info
144 144
 	public static void fillJobInfo(XxlJobInfo jobInfo) {
145 145
 		// TriggerKey : name + group
146
-        TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getJobName(), String.valueOf(jobInfo.getJobGroup()));
146
+        String group = String.valueOf(jobInfo.getJobGroup());
147
+        String name = String.valueOf(jobInfo.getId());
148
+        TriggerKey triggerKey = TriggerKey.triggerKey(name, group);
147 149
 
148 150
         try {
149 151
 			Trigger trigger = scheduler.getTrigger(triggerKey);
@@ -177,7 +179,7 @@ public final class XxlJobDynamicScheduler implements ApplicationContextAware, In
177 179
 
178 180
 	// addJob 新增
179 181
 	@SuppressWarnings("unchecked")
180
-	public static boolean addJob(String jobGroup, String jobName, String cronExpression) throws SchedulerException {
182
+	public static boolean addJob(String jobName, String jobGroup, String cronExpression) throws SchedulerException {
181 183
     	// TriggerKey : name + group
182 184
         TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup);
183 185
         JobKey jobKey = new JobKey(jobName, jobGroup);

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java Parādīt failu

@@ -57,7 +57,7 @@ public class JobMonitorHelper {
57 57
 									// pass
58 58
 								}
59 59
 								if (ReturnT.FAIL_CODE == log.getTriggerCode()|| ReturnT.FAIL_CODE==log.getHandleCode()) {
60
-									XxlJobInfo info = XxlJobDynamicScheduler.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
60
+									XxlJobInfo info = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(log.getJobId());
61 61
 									if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
62 62
 
63 63
 										Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));

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

@@ -1,7 +1,6 @@
1 1
 package com.xxl.job.admin.dao;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
-import com.xxl.job.admin.core.model.XxlJobLog;
5 4
 
6 5
 import java.util.List;
7 6
 
@@ -18,11 +17,10 @@ public interface IXxlJobInfoDao {
18 17
 	public int save(XxlJobInfo info);
19 18
 
20 19
 	public XxlJobInfo loadById(int id);
21
-	public XxlJobInfo load(int jobGroup, String jobName);
22 20
 	
23 21
 	public int update(XxlJobInfo item);
24 22
 	
25
-	public int delete(int jobGroup, String jobName);
23
+	public int delete(int id);
26 24
 
27
-	public List<XxlJobLog> getJobsByGroup(String jobGroup);
25
+	public List<XxlJobInfo> getJobsByGroup(String jobGroup);
28 26
 }

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

@@ -11,8 +11,8 @@ import java.util.List;
11 11
  */
12 12
 public interface IXxlJobLogDao {
13 13
 	
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);
14
+	public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, int jobId, Date triggerTimeStart, Date triggerTimeEnd);
15
+	public int pageListCount(int offset, int pagesize, int jobGroup, int jobId, Date triggerTimeStart, Date triggerTimeEnd);
16 16
 	
17 17
 	public XxlJobLog load(int id);
18 18
 
@@ -20,6 +20,6 @@ public interface IXxlJobLogDao {
20 20
 	public int updateTriggerInfo(XxlJobLog xxlJobLog);
21 21
 	public int updateHandleInfo(XxlJobLog xxlJobLog);
22 22
 	
23
-	public int delete(int jobGroup, String jobName);
23
+	public int delete(int jobId);
24 24
 	
25 25
 }

+ 3 - 17
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java Parādīt failu

@@ -1,7 +1,6 @@
1 1
 package com.xxl.job.admin.dao.impl;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
-import com.xxl.job.admin.core.model.XxlJobLog;
5 4
 import com.xxl.job.admin.dao.IXxlJobInfoDao;
6 5
 import org.mybatis.spring.SqlSessionTemplate;
7 6
 import org.springframework.stereotype.Repository;
@@ -53,30 +52,17 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
53 52
 	}
54 53
 
55 54
 	@Override
56
-	public XxlJobInfo load(int jobGroup, String jobName) {
57
-		HashMap<String, Object> params = new HashMap<String, Object>();
58
-		params.put("jobGroup", jobGroup);
59
-		params.put("jobName", jobName);
60
-		
61
-		return sqlSessionTemplate.selectOne("XxlJobInfoMapper.load", params);
62
-	}
63
-
64
-	@Override
65 55
 	public int update(XxlJobInfo item) {
66 56
 		return sqlSessionTemplate.update("XxlJobInfoMapper.update", item);
67 57
 	}
68 58
 
69 59
 	@Override
70
-	public int delete(int jobGroup, String jobName) {
71
-		HashMap<String, Object> params = new HashMap<String, Object>();
72
-		params.put("jobGroup", jobGroup);
73
-		params.put("jobName", jobName);
74
-		
75
-		return sqlSessionTemplate.update("XxlJobInfoMapper.delete", params);
60
+	public int delete(int id) {
61
+		return sqlSessionTemplate.update("XxlJobInfoMapper.delete", id);
76 62
 	}
77 63
 
78 64
 	@Override
79
-	public List<XxlJobLog> getJobsByGroup(String jobGroup) {
65
+	public List<XxlJobInfo> getJobsByGroup(String jobGroup) {
80 66
 		return sqlSessionTemplate.selectList("XxlJobInfoMapper.getJobsByGroup", jobGroup);
81 67
 	}
82 68
 

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

@@ -21,12 +21,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
21 21
 	public SqlSessionTemplate sqlSessionTemplate;
22 22
 
23 23
 	@Override
24
-	public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
24
+	public List<XxlJobLog> pageList(int offset, int pagesize, int jobGroup, int jobId, Date triggerTimeStart, Date triggerTimeEnd) {
25 25
 		HashMap<String, Object> params = new HashMap<String, Object>();
26 26
 		params.put("offset", offset);
27 27
 		params.put("pagesize", pagesize);
28 28
 		params.put("jobGroup", jobGroup);
29
-		params.put("jobName", jobName);
29
+		params.put("jobId", jobId);
30 30
 		params.put("triggerTimeStart", triggerTimeStart);
31 31
 		params.put("triggerTimeEnd", triggerTimeEnd);
32 32
 		
@@ -34,12 +34,12 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
34 34
 	}
35 35
 
36 36
 	@Override
37
-	public int pageListCount(int offset, int pagesize, int jobGroup, String jobName, Date triggerTimeStart, Date triggerTimeEnd) {
37
+	public int pageListCount(int offset, int pagesize, int jobGroup, int jobId, Date triggerTimeStart, Date triggerTimeEnd) {
38 38
 		HashMap<String, Object> params = new HashMap<String, Object>();
39 39
 		params.put("offset", offset);
40 40
 		params.put("pagesize", pagesize);
41 41
 		params.put("jobGroup", jobGroup);
42
-		params.put("jobName", jobName);
42
+		params.put("jobId", jobId);
43 43
 		params.put("triggerTimeStart", triggerTimeStart);
44 44
 		params.put("triggerTimeEnd", triggerTimeEnd);
45 45
 		
@@ -73,11 +73,8 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
73 73
 	}
74 74
 
75 75
 	@Override
76
-	public int delete(int jobGroup, String jobName) {
77
-		HashMap<String, Object> params = new HashMap<String, Object>();
78
-		params.put("jobGroup", jobGroup);
79
-		params.put("jobName", jobName);
80
-		return sqlSessionTemplate.delete("XxlJobLogMapper.delete", params);
76
+	public int delete(int jobId) {
77
+		return sqlSessionTemplate.delete("XxlJobLogMapper.delete", jobId);
81 78
 	}
82 79
 	
83 80
 }

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

@@ -19,12 +19,12 @@ public interface IXxlJobService {
19 19
 	
20 20
 	public ReturnT<String> reschedule(XxlJobInfo jobInfo);
21 21
 	
22
-	public ReturnT<String> remove(int jobGroup, String jobName);
22
+	public ReturnT<String> remove(int id);
23 23
 	
24
-	public ReturnT<String> pause(int jobGroup, String jobName);
24
+	public ReturnT<String> pause(int id);
25 25
 	
26
-	public ReturnT<String> resume(int jobGroup, String jobName);
26
+	public ReturnT<String> resume(int id);
27 27
 	
28
-	public ReturnT<String> triggerJob(int jobGroup, String jobName);
28
+	public ReturnT<String> triggerJob(int id);
29 29
 	
30 30
 }

+ 41 - 57
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java Parādīt failu

@@ -11,7 +11,6 @@ import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
11 11
 import com.xxl.job.admin.service.IXxlJobService;
12 12
 import com.xxl.job.core.biz.model.ReturnT;
13 13
 import org.apache.commons.lang.StringUtils;
14
-import org.apache.commons.lang.time.FastDateFormat;
15 14
 import org.quartz.CronExpression;
16 15
 import org.quartz.SchedulerException;
17 16
 import org.slf4j.Logger;
@@ -20,7 +19,6 @@ import org.springframework.stereotype.Service;
20 19
 
21 20
 import javax.annotation.Resource;
22 21
 import java.text.MessageFormat;
23
-import java.util.Date;
24 22
 import java.util.HashMap;
25 23
 import java.util.List;
26 24
 import java.util.Map;
@@ -98,53 +96,20 @@ public class XxlJobServiceImpl implements IXxlJobService {
98 96
 				if (childJobKeyArr.length!=2) {
99 97
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
100 98
 				}
101
-				XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
99
+				XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1]));
102 100
 				if (childJobInfo==null) {
103 101
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
104 102
 				}
105 103
 			}
106 104
 		}
107 105
 
108
-		// generate jobName
109
-		String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date());
110
-		jobInfo.setJobName(jobName);
111
-		try {
112
-			if (XxlJobDynamicScheduler.checkExists(jobName, String.valueOf(jobInfo.getJobGroup()))) {
113
-				return new ReturnT<String>(500, "系统繁忙,请稍后重试");
114
-			}
115
-		} catch (SchedulerException e1) {
116
-			e1.printStackTrace();
117
-			return new ReturnT<String>(500, "系统繁忙,请稍后重试");
118
-		}
119
-
120
-		// Backup to the database
121
-		/*XxlJobInfo jobInfo = new XxlJobInfo();
122
-		jobInfo.setJobGroup(jobGroup);
123
-		jobInfo.setJobName(jobName);
124
-		jobInfo.setJobCron(jobCron);
125
-		jobInfo.setJobDesc(jobDesc);
126
-		jobInfo.setAuthor(author);
127
-		jobInfo.setAlarmEmail(alarmEmail);
128
-		jobInfo.setExecutorHandler(executorHandler);
129
-		jobInfo.setExecutorParam(executorParam);
130
-		jobInfo.setGlueSwitch(glueSwitch);
131
-		jobInfo.setGlueSource(glueSource);
132
-		jobInfo.setGlueRemark(glueRemark);
133
-		jobInfo.setChildJobKey(childJobKey);*/
134
-
135
-		try {
136
-			// add job 2 quartz
137
-			boolean result = XxlJobDynamicScheduler.addJob(String.valueOf(jobInfo.getJobGroup()), jobName, jobInfo.getJobCron());
138
-			if (result) {
139
-				xxlJobInfoDao.save(jobInfo);
140
-				return ReturnT.SUCCESS;
141
-			} else {
142
-				return new ReturnT<String>(500, "新增任务失败");
143
-			}
144
-		} catch (SchedulerException e) {
145
-			logger.error("", e);
106
+		// add in db
107
+		xxlJobInfoDao.save(jobInfo);
108
+		int jobId = jobInfo.getId();
109
+		if (jobId < 1) {
110
+			return new ReturnT<String>(500, "新增任务失败");
146 111
 		}
147
-		return ReturnT.FAIL;
112
+		return ReturnT.SUCCESS;
148 113
 	}
149 114
 
150 115
 	@Override
@@ -178,7 +143,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
178 143
 				if (childJobKeyArr.length!=2) {
179 144
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
180 145
 				}
181
-				XxlJobInfo childJobInfo = xxlJobInfoDao.load(Integer.valueOf(childJobKeyArr[0]), childJobKeyArr[1]);
146
+                XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1]));
182 147
 				if (childJobInfo==null) {
183 148
 					return new ReturnT<String>(500, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
184 149
 				}
@@ -203,7 +168,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
203 168
 		
204 169
 		try {
205 170
 			// fresh quartz
206
-			boolean ret = XxlJobDynamicScheduler.rescheduleJob(String.valueOf(exists_jobInfo.getJobGroup()), exists_jobInfo.getJobName(), exists_jobInfo.getJobCron());
171
+			boolean ret = XxlJobDynamicScheduler.rescheduleJob(String.valueOf(exists_jobInfo.getJobGroup()), String.valueOf(exists_jobInfo.getId()), exists_jobInfo.getJobCron());
207 172
 			if (ret) {
208 173
 				xxlJobInfoDao.update(exists_jobInfo);
209 174
 				return ReturnT.SUCCESS;
@@ -217,14 +182,16 @@ public class XxlJobServiceImpl implements IXxlJobService {
217 182
 	}
218 183
 
219 184
 	@Override
220
-	public ReturnT<String> remove(int jobGroup, String jobName) {
221
-		XxlJobInfo xxlJobInfo = xxlJobInfoDao.load(jobGroup, jobName);
185
+	public ReturnT<String> remove(int id) {
186
+		XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
187
+        String group = String.valueOf(xxlJobInfo.getJobGroup());
188
+        String name = String.valueOf(xxlJobInfo.getId());
222 189
 
223 190
 		try {
224
-			XxlJobDynamicScheduler.removeJob(jobName, String.valueOf(jobGroup));
225
-			xxlJobInfoDao.delete(jobGroup, jobName);
226
-			xxlJobLogDao.delete(jobGroup, jobName);
227
-			xxlJobLogGlueDao.deleteByJobId(xxlJobInfo.getId());
191
+			XxlJobDynamicScheduler.removeJob(name, group);
192
+			xxlJobInfoDao.delete(id);
193
+			xxlJobLogDao.delete(id);
194
+			xxlJobLogGlueDao.deleteByJobId(id);
228 195
 			return ReturnT.SUCCESS;
229 196
 		} catch (SchedulerException e) {
230 197
 			e.printStackTrace();
@@ -233,9 +200,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
233 200
 	}
234 201
 
235 202
 	@Override
236
-	public ReturnT<String> pause(int jobGroup, String jobName) {
203
+	public ReturnT<String> pause(int id) {
204
+        XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
205
+        String group = String.valueOf(xxlJobInfo.getJobGroup());
206
+        String name = String.valueOf(xxlJobInfo.getId());
207
+
237 208
 		try {
238
-			XxlJobDynamicScheduler.pauseJob(jobName, String.valueOf(jobGroup));	// jobStatus do not store
209
+			XxlJobDynamicScheduler.pauseJob(name, group);	// jobStatus do not store
239 210
 			return ReturnT.SUCCESS;
240 211
 		} catch (SchedulerException e) {
241 212
 			e.printStackTrace();
@@ -244,10 +215,19 @@ public class XxlJobServiceImpl implements IXxlJobService {
244 215
 	}
245 216
 
246 217
 	@Override
247
-	public ReturnT<String> resume(int jobGroup, String jobName) {
218
+	public ReturnT<String> resume(int id) {
219
+        XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
220
+        String group = String.valueOf(xxlJobInfo.getJobGroup());
221
+        String name = String.valueOf(xxlJobInfo.getId());
222
+
248 223
 		try {
249
-			XxlJobDynamicScheduler.resumeJob(jobName, String.valueOf(jobGroup));
250
-			return ReturnT.SUCCESS;
224
+			boolean ret = false;
225
+			if (XxlJobDynamicScheduler.checkExists(name, group)) {
226
+				ret = XxlJobDynamicScheduler.resumeJob(name, group);
227
+			} else {
228
+				ret = XxlJobDynamicScheduler.addJob(name, group, xxlJobInfo.getJobCron());
229
+			}
230
+			return ret?ReturnT.SUCCESS:ReturnT.FAIL;
251 231
 		} catch (SchedulerException e) {
252 232
 			e.printStackTrace();
253 233
 			return ReturnT.FAIL;
@@ -255,9 +235,13 @@ public class XxlJobServiceImpl implements IXxlJobService {
255 235
 	}
256 236
 
257 237
 	@Override
258
-	public ReturnT<String> triggerJob(int jobGroup, String jobName) {
238
+	public ReturnT<String> triggerJob(int id) {
239
+        XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
240
+        String group = String.valueOf(xxlJobInfo.getJobGroup());
241
+        String name = String.valueOf(xxlJobInfo.getId());
242
+
259 243
 		try {
260
-			XxlJobDynamicScheduler.triggerJob(jobName, String.valueOf(jobGroup));
244
+			XxlJobDynamicScheduler.triggerJob(name, group);
261 245
 			return ReturnT.SUCCESS;
262 246
 		} catch (SchedulerException e) {
263 247
 			e.printStackTrace();

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

@@ -7,7 +7,6 @@
7 7
 		<result column="id" property="id" />
8 8
 	
9 9
 		<result column="job_group" property="jobGroup" />
10
-	    <result column="job_name" property="jobName" />
11 10
 	    <result column="job_cron" property="jobCron" />
12 11
 	    <result column="job_desc" property="jobDesc" />
13 12
 	    
@@ -31,7 +30,6 @@
31 30
 	<sql id="Base_Column_List">
32 31
 		t.id,
33 32
 		t.job_group,
34
-		t.job_name,
35 33
 		t.job_cron,
36 34
 		t.job_desc,
37 35
 		t.add_time,
@@ -74,11 +72,10 @@
74 72
 			</if>
75 73
 		</trim>
76 74
 	</select>
77
-	
75
+
78 76
 	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
79 77
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_INFO (
80 78
 			job_group,
81
-			job_name,
82 79
 			job_cron,
83 80
 			job_desc,
84 81
 			add_time,
@@ -93,8 +90,7 @@
93 90
 			glue_remark,
94 91
 			child_jobkey
95 92
 		) VALUES (
96
-			#{jobGroup}, 
97
-			#{jobName}, 
93
+			#{jobGroup},
98 94
 			#{jobCron}, 
99 95
 			#{jobDesc},
100 96
 			NOW(),
@@ -109,9 +105,10 @@
109 105
 			#{glueRemark},
110 106
 			#{childJobKey}
111 107
 		);
112
-		<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> 
113
-			SELECT LAST_INSERT_ID() 
114
-		</selectKey> 
108
+		<!--<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
109
+			SELECT LAST_INSERT_ID()
110
+			/*SELECT @@IDENTITY AS id*/
111
+		</selectKey>-->
115 112
 	</insert>
116 113
 
117 114
 	<select id="loadById" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
@@ -119,13 +116,6 @@
119 116
 		FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
120 117
 		WHERE t.id = #{id}
121 118
 	</select>
122
-
123
-	<select id="load" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
124
-		SELECT <include refid="Base_Column_List" />
125
-		FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
126
-		WHERE t.job_group = #{jobGroup}
127
-			AND t.job_name = #{jobName}
128
-	</select>
129 119
 	
130 120
 	<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
131 121
 		UPDATE XXL_JOB_QRTZ_TRIGGER_INFO
@@ -142,17 +132,13 @@
142 132
 			glue_source = #{glueSource},
143 133
 			glue_remark = #{glueRemark},
144 134
 			child_jobkey = #{childJobKey}
145
-		WHERE job_group = #{jobGroup}
146
-			AND job_name = #{jobName}
135
+		WHERE id = #{id}
147 136
 	</update>
148 137
 	
149 138
 	<delete id="delete" parameterType="java.util.HashMap">
150 139
 		DELETE
151
-		FROM
152
-			XXL_JOB_QRTZ_TRIGGER_INFO
153
-		WHERE
154
-			job_group = #{jobGroup}
155
-		AND job_name = #{jobName}
140
+		FROM XXL_JOB_QRTZ_TRIGGER_INFO
141
+		WHERE id = #{id}
156 142
 	</delete>
157 143
 
158 144
 	<select id="getJobsByGroup" parameterType="java.util.HashMap" resultMap="XxlJobInfo">

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

@@ -5,10 +5,10 @@
5 5
 	
6 6
 	<resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" >
7 7
 		<result column="id" property="id" />
8
-	
9
-	    <result column="job_group" property="jobGroup" />
10
-	    <result column="job_name" property="jobName" />
11
-	    
8
+
9
+		<result column="job_group" property="jobGroup" />
10
+		<result column="job_id" property="jobId" />
11
+
12 12
 	    <result column="executor_address" property="executorAddress" />
13 13
 		<result column="executor_handler" property="executorHandler" />
14 14
 	    <result column="executor_param" property="executorParam" />
@@ -26,7 +26,7 @@
26 26
 	<sql id="Base_Column_List">
27 27
 		t.id,
28 28
 		t.job_group,
29
-		t.job_name,
29
+		t.job_id,
30 30
 		t.executor_address,
31 31
 		t.executor_handler,
32 32
 		t.executor_param,
@@ -45,8 +45,8 @@
45 45
 			<if test="jobGroup != null and jobGroup != ''">
46 46
 				AND t.job_group = #{jobGroup}
47 47
 			</if>
48
-			<if test="jobName != null and jobName != ''">
49
-				AND t.job_name = #{jobName}
48
+			<if test="jobId gt 0">
49
+				AND t.job_id = #{jobId}
50 50
 			</if>
51 51
 			<if test="triggerTimeStart != null">
52 52
 				AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
@@ -66,8 +66,8 @@
66 66
 			<if test="jobGroup != null and jobGroup != ''">
67 67
 				AND t.job_group = #{jobGroup}
68 68
 			</if>
69
-			<if test="jobName != null and jobName != ''">
70
-				AND t.job_name = #{jobName}
69
+			<if test="jobId gt 0">
70
+				AND t.job_id = #{jobId}
71 71
 			</if>
72 72
 			<if test="triggerTimeStart != null">
73 73
 				AND t.trigger_time <![CDATA[ >= ]]> #{triggerTimeStart}
@@ -88,13 +88,13 @@
88 88
 	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
89 89
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
90 90
 			`job_group`,
91
-			`job_name`,
91
+			`job_id`,
92 92
 			`executor_address`,
93 93
 			`executor_handler`,
94 94
 			`executor_param`
95 95
 		) VALUES (
96
-			#{jobGroup}, 
97
-			#{jobName},
96
+			#{jobGroup},
97
+			#{jobId},
98 98
 			#{executorAddress},
99 99
 			#{executorHandler},
100 100
 			#{executorParam}
@@ -127,8 +127,7 @@
127 127
 	
128 128
 	<delete id="delete">
129 129
 		delete from XXL_JOB_QRTZ_TRIGGER_LOG
130
-		WHERE job_group = #{jobGroup}
131
-			AND job_name = #{jobName}
130
+		WHERE job_id = #{jobId}
132 131
 	</delete>
133 132
 	
134 133
 </mapper>

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

@@ -51,7 +51,7 @@
51 51
                 <div class="col-xs-4">
52 52
                     <div class="input-group">
53 53
                         <span class="input-group-addon">JobHandler</span>
54
-                        <input type="text" class="form-control" id="executorHandler" value="${jobName}" autocomplete="on" >
54
+                        <input type="text" class="form-control" id="executorHandler" autocomplete="on" >
55 55
                     </div>
56 56
                 </div>
57 57
 	            <div class="col-xs-2">
@@ -74,7 +74,6 @@
74 74
 					            	<tr>
75 75
 					            		<th name="id" >id</th>
76 76
 					                	<th name="jobGroup" >jobGroup</th>
77
-					                  	<th name="jobName" >jobName</th>
78 77
                                         <th name="childJobKey" >任务Key</th>
79 78
 					                  	<th name="jobDesc" >描述</th>
80 79
 					                  	<th name="jobCron" >Cron</th>

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

@@ -35,19 +35,19 @@
35 35
 	    		<div class="col-xs-3">
36 36
  					<div class="input-group">
37 37
 	                	<span class="input-group-addon">执行器</span>
38
-                		<select class="form-control" id="jobGroup"  paramVal="${jobGroup}" >
39
-                            <option value="0" selected>请选择</option>
38
+                		<select class="form-control" id="jobGroup"  paramVal="<#if jobInfo?exists>${jobInfo.jobGroup}</#if>" >
39
+                            <option value="0" >请选择</option>
40 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}" >${group.title}</option>
42 42
                 			</#list>
43 43
 	                  	</select>
44 44
 	              	</div>
45 45
 	            </div>
46 46
 	            <div class="col-xs-3">
47 47
 	              	<div class="input-group">
48
-	                	<span class="input-group-addon">描述</span>
49
-                        <select class="form-control" id="jobName" paramVal="${jobName}" >
50
-                            <option value="" >请选择</option>
48
+	                	<span class="input-group-addon">任务</span>
49
+                        <select class="form-control" id="jobId" paramVal="<#if jobInfo?exists>${jobInfo.id}</#if>" >
50
+                            <option value="0" >请选择</option>
51 51
 						</select>
52 52
 	              	</div>
53 53
 	            </div>
@@ -76,8 +76,8 @@
76 76
 				                <thead>
77 77
 					            	<tr>
78 78
 					                	<th name="id" >id</th>
79
-					                	<th name="jobGroup" >任务组</th>
80
-					                  	<th name="jobName" >任务名</th>
79
+                                        <th name="jobGroup" >执行器ID</th>
80
+					                	<th name="jobId" >任务ID</th>
81 81
 					                  	<th name="executorAddress" >执行器地址</th>
82 82
                                         <th name="executorHandler" >JobHandler</th>
83 83
 					                  	<th name="executorParam" >任务参数</th>

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

@@ -34,12 +34,11 @@ $(function() {
34 34
 	            			return data;
35 35
 	            		}
36 36
             		},
37
-					{ "data": 'jobName', "visible" : false},
38 37
 					{
39 38
 						"data": 'childJobKey',
40 39
 						"visible" : true,
41 40
 						"render": function ( data, type, row ) {
42
-							var jobKey = row.jobGroup + "_" + row.jobName;
41
+							var jobKey = row.jobGroup + "_" + row.id;
43 42
 							return jobKey;
44 43
 						}
45 44
 					},
@@ -76,7 +75,7 @@ $(function() {
76 75
 	                	"render": function ( data, type, row ) {
77 76
 	                		if ('NORMAL' == data) {
78 77
 	                			return '<small class="label label-success" ><i class="fa fa-clock-o"></i>'+ data +'</small>'; 
79
-							} else if ('PAUSED' == data){
78
+							} else if ('PAUSED' == data || 'NONE' == data){
80 79
 								return '<small class="label label-default" title="暂停" ><i class="fa fa-clock-o"></i>'+ data +'</small>'; 
81 80
 							} else if ('BLOCKED' == data){
82 81
 								return '<small class="label label-default" title="阻塞[串行]" ><i class="fa fa-clock-o"></i>'+ data +'</small>'; 
@@ -91,11 +90,11 @@ $(function() {
91 90
 	                			var pause_resume = "";
92 91
 	                			if ('NORMAL' == row.jobStatus) {
93 92
 	                				pause_resume = '<button class="btn btn-primary btn-xs job_operate" type="job_pause" type="button">暂停</button>  ';
94
-								} else if ('PAUSED' == row.jobStatus){
93
+								} else if ('PAUSED' == row.jobStatus || 'NONE' == row.jobStatus){
95 94
 									pause_resume = '<button class="btn btn-primary btn-xs job_operate" type="job_resume" type="button">恢复</button>  ';
96 95
 								}
97 96
 	                			// log url
98
-	                			var logUrl = base_url +'/joblog?jobGroup='+ row.jobGroup +'&jobName='+ row.jobName;
97
+	                			var logUrl = base_url +'/joblog?jobId='+ row.id;
99 98
 	                			
100 99
 	                			// log url
101 100
 	                			var codeBtn = "";
@@ -107,7 +106,6 @@ $(function() {
107 106
 								// html
108 107
 								var html = '<p id="'+ row.id +'" '+
109 108
 									' jobGroup="'+ row.jobGroup +'" '+
110
-									' jobName="'+ row.jobName +'" '+
111 109
 									' jobCron="'+ row.jobCron +'" '+
112 110
 									' jobDesc="'+ row.jobDesc +'" '+
113 111
 									' author="'+ row.author +'" '+
@@ -188,16 +186,14 @@ $(function() {
188 186
 			return;
189 187
 		}
190 188
 		
191
-		var jobGroup = $(this).parent('p').attr("jobGroup");
192
-		var jobName = $(this).parent('p').attr("jobName");
189
+		var id = $(this).parent('p').attr("id");
193 190
 		
194 191
 		ComConfirm.show("确认" + typeName + "?", function(){
195 192
 			$.ajax({
196 193
 				type : 'POST',
197 194
 				url : url,
198 195
 				data : {
199
-					"jobGroup" : jobGroup,
200
-					"jobName"  : jobName
196
+					"id" : id
201 197
 				},
202 198
 				dataType : "json",
203 199
 				success : function(data){

+ 9 - 25
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js Parādīt failu

@@ -1,24 +1,22 @@
1 1
 $(function() {
2 2
 
3 3
 	// 任务组列表选中, 任务列表初始化和选中
4
-    var ifParam = true;
5 4
 	$("#jobGroup").on("change", function () {
6 5
 		var jobGroup = $(this).children('option:selected').val();
7 6
 		$.ajax({
8 7
 			type : 'POST',
9
-            async: false,   // async, avoid js invoke pagelist before jobName data init
8
+            async: false,   // async, avoid js invoke pagelist before jobId data init
10 9
 			url : base_url + '/joblog/getJobsByGroup',
11 10
 			data : {"jobGroup":jobGroup},
12 11
 			dataType : "json",
13 12
 			success : function(data){
14 13
 				if (data.code == 200) {
15
-					$("#jobName").html('<option value="" >请选择</option>');
16
-                        $.each(data.content, function (n, value) {
17
-                        $("#jobName").append('<option value="' + value.jobName + '" >' + value.jobDesc + '</option>');
14
+					$("#jobId").html('<option value="" >请选择</option>');
15
+					$.each(data.content, function (n, value) {
16
+                        $("#jobId").append('<option value="' + value.id + '" >' + value.jobDesc + '</option>');
18 17
                     });
19
-                    if ($("#jobName").attr("paramVal")){
20
-                        $("#jobName").find("option[value='" + $("#jobName").attr("paramVal") + "']").attr("selected",true);
21
-                        $("#jobName").attr("paramVal")
18
+                    if ($("#jobId").attr("paramVal")){
19
+                        $("#jobId").find("option[value='" + $("#jobId").attr("paramVal") + "']").attr("selected",true);
22 20
                     }
23 21
 				} else {
24 22
 					ComAlertTec.show(data.msg);
@@ -29,7 +27,6 @@ $(function() {
29 27
 	if ($("#jobGroup").attr("paramVal")){
30 28
 		$("#jobGroup").find("option[value='" + $("#jobGroup").attr("paramVal") + "']").attr("selected",true);
31 29
         $("#jobGroup").change();
32
-        $("#jobGroup").attr("")
33 30
 	}
34 31
 
35 32
 	// 过滤时间
@@ -70,7 +67,7 @@ $(function() {
70 67
 	        data : function ( d ) {
71 68
 	        	var obj = {};
72 69
 	        	obj.jobGroup = $('#jobGroup').val();
73
-	        	obj.jobName = $('#jobName').val();
70
+	        	obj.jobId = $('#jobId').val();
74 71
 				obj.filterTime = $('#filterTime').val();
75 72
 	        	obj.start = d.start;
76 73
 	        	obj.length = d.length;
@@ -82,21 +79,8 @@ $(function() {
82 79
 	    //"scrollX": false,
83 80
 	    "columns": [
84 81
 	                { "data": 'id', "bSortable": false, "visible" : false},
85
-	                { 
86
-	                	"data": 'jobGroup', 
87
-	                	"visible" : false, 
88
-	                	"bSortable": false, 
89
-	                	"render": function ( data, type, row ) {
90
-	            			var groupMenu = $("#jobGroup").find("option");
91
-	            			for ( var index in $("#jobGroup").find("option")) {
92
-	            				if ($(groupMenu[index]).attr('value') == data) {
93
-									return $(groupMenu[index]).html();
94
-								}
95
-							}
96
-	            			return data;
97
-	            		}
98
-            		},
99
-	                { "data": 'jobName', "visible" : false},
82
+					{ "data": 'jobGroup', "visible" : false},
83
+	                { "data": 'jobId', "visible" : false},
100 84
 	                { "data": 'executorAddress', "visible" : true},
101 85
 					{
102 86
 						"data": 'executorHandler',

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

@@ -29,19 +29,19 @@ public class XxlJobInfoTest {
29 29
 	@Test
30 30
 	public void save_load(){
31 31
 		XxlJobInfo info = new XxlJobInfo();
32
-		info.setJobName("job_name");
32
+		info.setJobGroup(1);
33 33
 		info.setJobCron("jobCron");
34 34
 		int count = xxlJobInfoDao.save(info);
35 35
 		System.out.println(count);
36 36
 		System.out.println(info.getId());
37
-		
38
-		XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
37
+
38
+		XxlJobInfo item = xxlJobInfoDao.loadById(2);
39 39
 		System.out.println(item);
40 40
 	}
41 41
 	
42 42
 	@Test
43 43
 	public void update(){
44
-		XxlJobInfo item = xxlJobInfoDao.load(0 ,"job_name");
44
+		XxlJobInfo item = xxlJobInfoDao.loadById(2);
45 45
 		
46 46
 		item.setJobCron("jobCron2");
47 47
 		xxlJobInfoDao.update(item);

+ 2 - 3
xxl-job-core/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java Parādīt failu

@@ -16,11 +16,10 @@ public interface ExecutorBiz {
16 16
 
17 17
     /**
18 18
      * kill
19
-     * @param jobGroup
20
-     * @param jobName
19
+     * @param jobId
21 20
      * @return
22 21
      */
23
-    public ReturnT<String> kill(String jobGroup, String jobName);
22
+    public ReturnT<String> kill(int jobId);
24 23
 
25 24
     /**
26 25
      * log

+ 10 - 17
xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java Parādīt failu

@@ -23,19 +23,15 @@ public class ExecutorBizImpl implements ExecutorBiz {
23 23
     }
24 24
 
25 25
     @Override
26
-    public ReturnT<String> kill(String jobGroup, String jobName) {
27
-
28
-        // generate jobKey
29
-        String jobKey = jobGroup.concat("_").concat(jobName);
30
-
26
+    public ReturnT<String> kill(int jobId) {
31 27
         // kill handlerThread, and create new one
32
-        JobThread jobThread = XxlJobExecutor.loadJobThread(jobKey);
28
+        JobThread jobThread = XxlJobExecutor.loadJobThread(jobId);
33 29
 
34 30
         if (jobThread != null) {
35 31
             IJobHandler handler = jobThread.getHandler();
36 32
             jobThread.toStop("人工手动终止");
37 33
             jobThread.interrupt();
38
-            XxlJobExecutor.removeJobThread(jobKey);
34
+            XxlJobExecutor.removeJobThread(jobId);
39 35
             return ReturnT.SUCCESS;
40 36
         }
41 37
 
@@ -53,11 +49,8 @@ public class ExecutorBizImpl implements ExecutorBiz {
53 49
 
54 50
     @Override
55 51
     public ReturnT<String> run(TriggerParam triggerParam) {
56
-        // generate jobKey
57
-        String jobKey = triggerParam.getJobGroup().concat("_").concat(triggerParam.getJobName());
58
-
59 52
         // load old thread
60
-        JobThread jobThread = XxlJobExecutor.loadJobThread(jobKey);
53
+        JobThread jobThread = XxlJobExecutor.loadJobThread(triggerParam.getJobId());
61 54
 
62 55
         if (!triggerParam.isGlueSwitch()) {
63 56
             // bean model
@@ -65,11 +58,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
65 58
             // valid handler instance
66 59
             IJobHandler jobHandler = XxlJobExecutor.loadJobHandler(triggerParam.getExecutorHandler());
67 60
             if (jobHandler==null) {
68
-                return new ReturnT(ReturnT.FAIL_CODE, "job handler for jobKey=[" + jobKey + "] not found.");
61
+                return new ReturnT(ReturnT.FAIL_CODE, "job handler for JobId=[" + triggerParam.getJobId() + "] not found.");
69 62
             }
70 63
 
71 64
             if (jobThread == null) {
72
-                jobThread = XxlJobExecutor.registJobThread(jobKey, jobHandler);
65
+                jobThread = XxlJobExecutor.registJobThread(triggerParam.getJobId(), jobHandler);
73 66
             } else {
74 67
                 // job handler update, kill old job thread
75 68
                 if (jobThread.getHandler() != jobHandler) {
@@ -78,7 +71,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
78 71
                     jobThread.interrupt();
79 72
 
80 73
                     // new thread, with new job handler
81
-                    jobThread = XxlJobExecutor.registJobThread(jobKey, jobHandler);
74
+                    jobThread = XxlJobExecutor.registJobThread(triggerParam.getJobId(), jobHandler);
82 75
                 }
83 76
             }
84 77
         } else {
@@ -86,11 +79,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
86 79
 
87 80
             // valid glueloader
88 81
             if (!GlueFactory.isActive()) {
89
-                return new ReturnT(ReturnT.FAIL_CODE, "glueLoader for jobKey=[" + jobKey + "] not found.");
82
+                return new ReturnT(ReturnT.FAIL_CODE, "glueLoader for JobId=[" + triggerParam.getJobId() + "] not found.");
90 83
             }
91 84
 
92 85
             if (jobThread == null) {
93
-                jobThread = XxlJobExecutor.registJobThread(jobKey, new GlueJobHandler(triggerParam.getJobGroup(), triggerParam.getJobName()));
86
+                jobThread = XxlJobExecutor.registJobThread(triggerParam.getJobId(), new GlueJobHandler(triggerParam.getJobId()));
94 87
             } else {
95 88
                 // job handler update, kill old job thread
96 89
                 if (!(jobThread.getHandler() instanceof GlueJobHandler)) {
@@ -99,7 +92,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
99 92
                     jobThread.interrupt();
100 93
 
101 94
                     // new thread, with new job handler
102
-                    jobThread = XxlJobExecutor.registJobThread(jobKey, new GlueJobHandler(triggerParam.getJobGroup(), triggerParam.getJobName()));
95
+                    jobThread = XxlJobExecutor.registJobThread(triggerParam.getJobId(), new GlueJobHandler(triggerParam.getJobId()));
103 96
                 }
104 97
             }
105 98
         }

+ 12 - 45
xxl-job-core/src/main/java/com/xxl/job/core/biz/model/TriggerParam.java Parādīt failu

@@ -9,42 +9,24 @@ import java.util.Set;
9 9
 public class TriggerParam implements Serializable{
10 10
     private static final long serialVersionUID = 42L;
11 11
 
12
-    private String action;
13
-
14
-    private String jobGroup;
15
-    private String jobName;
12
+    private int jobId;
16 13
 
17 14
     private String executorHandler;
18 15
     private String executorParams;
19 16
 
20 17
     private boolean glueSwitch;
21 18
 
22
-    private Set<String> logAddress;
23 19
     private int logId;
24 20
     private long logDateTim;
25 21
 
26
-    public String getAction() {
27
-        return action;
28
-    }
29
-
30
-    public void setAction(String action) {
31
-        this.action = action;
32
-    }
33
-
34
-    public String getJobGroup() {
35
-        return jobGroup;
36
-    }
37
-
38
-    public void setJobGroup(String jobGroup) {
39
-        this.jobGroup = jobGroup;
40
-    }
22
+    private Set<String> logAddress;
41 23
 
42
-    public String getJobName() {
43
-        return jobName;
24
+    public int getJobId() {
25
+        return jobId;
44 26
     }
45 27
 
46
-    public void setJobName(String jobName) {
47
-        this.jobName = jobName;
28
+    public void setJobId(int jobId) {
29
+        this.jobId = jobId;
48 30
     }
49 31
 
50 32
     public String getExecutorHandler() {
@@ -71,14 +53,6 @@ public class TriggerParam implements Serializable{
71 53
         this.glueSwitch = glueSwitch;
72 54
     }
73 55
 
74
-    public Set<String> getLogAddress() {
75
-        return logAddress;
76
-    }
77
-
78
-    public void setLogAddress(Set<String> logAddress) {
79
-        this.logAddress = logAddress;
80
-    }
81
-
82 56
     public int getLogId() {
83 57
         return logId;
84 58
     }
@@ -95,18 +69,11 @@ public class TriggerParam implements Serializable{
95 69
         this.logDateTim = logDateTim;
96 70
     }
97 71
 
98
-    @Override
99
-    public String toString() {
100
-        return "RequestModel{" +
101
-                ", action='" + action + '\'' +
102
-                ", jobGroup='" + jobGroup + '\'' +
103
-                ", jobName='" + jobName + '\'' +
104
-                ", executorHandler='" + executorHandler + '\'' +
105
-                ", executorParams='" + executorParams + '\'' +
106
-                ", glueSwitch=" + glueSwitch +
107
-                ", logAddress=" + logAddress +
108
-                ", logId=" + logId +
109
-                ", logDateTim=" + logDateTim +
110
-                '}';
72
+    public Set<String> getLogAddress() {
73
+        return logAddress;
74
+    }
75
+
76
+    public void setLogAddress(Set<String> logAddress) {
77
+        this.logAddress = logAddress;
111 78
     }
112 79
 }

+ 9 - 9
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Parādīt failu

@@ -61,7 +61,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
61 61
 
62 62
         // job thread repository destory
63 63
         if (JobThreadRepository.size() > 0) {
64
-            for (Map.Entry<String, JobThread> item: JobThreadRepository.entrySet()) {
64
+            for (Map.Entry<Integer, JobThread> item: JobThreadRepository.entrySet()) {
65 65
                 JobThread jobThread = item.getValue();
66 66
                 jobThread.toStop("Web容器销毁终止");
67 67
                 jobThread.interrupt();
@@ -114,20 +114,20 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
114 114
     }
115 115
 
116 116
     // ---------------------------------- job thread repository
117
-    private static ConcurrentHashMap<String, JobThread> JobThreadRepository = new ConcurrentHashMap<String, JobThread>();
118
-    public static JobThread registJobThread(String jobkey, IJobHandler handler){
117
+    private static ConcurrentHashMap<Integer, JobThread> JobThreadRepository = new ConcurrentHashMap<Integer, JobThread>();
118
+    public static JobThread registJobThread(int jobId, IJobHandler handler){
119 119
         JobThread jobThread = new JobThread(handler);
120 120
         jobThread.start();
121
-        logger.info(">>>>>>>>>>> xxl-job regist JobThread success, jobkey:{}, handler:{}", new Object[]{jobkey, handler});
122
-        JobThreadRepository.put(jobkey, jobThread);	// putIfAbsent | oh my god, map's put method return the old value!!!
121
+        logger.info(">>>>>>>>>>> xxl-job regist JobThread success, jobId:{}, handler:{}", new Object[]{jobId, handler});
122
+        JobThreadRepository.put(jobId, jobThread);	// putIfAbsent | oh my god, map's put method return the old value!!!
123 123
         return jobThread;
124 124
     }
125
-    public static JobThread loadJobThread(String jobKey){
126
-        JobThread jobThread = JobThreadRepository.get(jobKey);
125
+    public static JobThread loadJobThread(int jobId){
126
+        JobThread jobThread = JobThreadRepository.get(jobId);
127 127
         return jobThread;
128 128
     }
129
-    public static void removeJobThread(String jobKey){
130
-        JobThreadRepository.remove(jobKey);
129
+    public static void removeJobThread(int jobId){
130
+        JobThreadRepository.remove(jobId);
131 131
     }
132 132
 
133 133
 }

+ 11 - 11
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueFactory.java Parādīt failu

@@ -112,11 +112,11 @@ public class GlueFactory implements ApplicationContextAware {
112 112
 	
113 113
 	// ----------------------------- load instance -----------------------------
114 114
 	// load new instance, prototype
115
-	public IJobHandler loadNewInstance(String job_group, String job_name) throws Exception{
116
-		if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
115
+	public IJobHandler loadNewInstance(int jobId) throws Exception{
116
+		if (jobId==0) {
117 117
 			return null;
118 118
 		}
119
-		String codeSource = glueLoader.load(job_group, job_name);
119
+		String codeSource = glueLoader.load(jobId);
120 120
 		if (codeSource!=null && codeSource.trim().length()>0) {
121 121
 			Class<?> clazz = groovyClassLoader.parseClass(codeSource);
122 122
 			if (clazz != null) {
@@ -136,14 +136,14 @@ public class GlueFactory implements ApplicationContextAware {
136 136
 	}
137 137
 	
138 138
 	// // load instance, singleton
139
-	private static String generateInstanceCacheKey(String job_group, String job_name){
140
-		return job_group.concat("_").concat(job_name).concat("_instance");
139
+	private static String generateInstanceCacheKey(int jobId){
140
+		return String.valueOf(jobId).concat("_instance");
141 141
 	}
142
-	public IJobHandler loadInstance(String job_group, String job_name) throws Exception{
143
-		if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
142
+	public IJobHandler loadInstance(int jobId) throws Exception{
143
+		if (jobId==0) {
144 144
 			return null;
145 145
 		}
146
-		String cacheInstanceKey = generateInstanceCacheKey(job_group, job_name);
146
+		String cacheInstanceKey = generateInstanceCacheKey(jobId);
147 147
 		Object cacheInstance = LocalCache.getInstance().get(cacheInstanceKey);
148 148
 		if (cacheInstance!=null) {
149 149
 			if (!(cacheInstance instanceof IJobHandler)) {
@@ -152,7 +152,7 @@ public class GlueFactory implements ApplicationContextAware {
152 152
 			}
153 153
 			return (IJobHandler) cacheInstance;
154 154
 		}
155
-		Object instance = loadNewInstance(job_group, job_name);
155
+		Object instance = loadNewInstance(jobId);
156 156
 		if (instance!=null) {
157 157
 			if (!(instance instanceof IJobHandler)) {
158 158
 				throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadInstance error, "
@@ -167,8 +167,8 @@ public class GlueFactory implements ApplicationContextAware {
167 167
 	}
168 168
 	
169 169
 	// ----------------------------- util -----------------------------
170
-	public static void glue(String job_group, String job_name, String... params) throws Exception{
171
-		GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params);
170
+	public static void glue(int jobId, String... params) throws Exception{
171
+		GlueFactory.glueFactory.loadInstance(jobId).execute(params);
172 172
 	}
173 173
 	
174 174
 }

+ 2 - 3
xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/GlueLoader.java Parādīt failu

@@ -8,10 +8,9 @@ public interface GlueLoader {
8 8
 
9 9
 	/**
10 10
 	 * load code source by name, ensure every load is the latest.
11
-	 * @param job_group
12
-	 * @param job_name
11
+	 * @param jobId
13 12
 	 * @return code source
14 13
 	 */
15
-	public String load(String job_group, String job_name);
14
+	public String load(int jobId);
16 15
 	
17 16
 }

+ 3 - 3
xxl-job-core/src/main/java/com/xxl/job/core/glue/loader/impl/DbGlueLoader.java Parādīt failu

@@ -18,9 +18,9 @@ public class DbGlueLoader implements GlueLoader {
18 18
     }
19 19
 
20 20
     @Override
21
-    public String load(String job_group, String job_name) {
22
-        String sql = "SELECT glue_source FROM XXL_JOB_QRTZ_TRIGGER_INFO WHERE job_group = ? AND job_name = ?";
23
-        List<Map<String, Object>> result = DBUtil.query(dataSource, sql, new String[]{job_group, job_name});
21
+    public String load(int jobId) {
22
+        String sql = "SELECT glue_source FROM XXL_JOB_QRTZ_TRIGGER_INFO WHERE id = ?";
23
+        List<Map<String, Object>> result = DBUtil.query(dataSource, sql, new Object[]{jobId});
24 24
         if (result!=null && result.size()==1 && result.get(0)!=null && result.get(0).get("glue_source")!=null ) {
25 25
             return (String) result.get(0).get("glue_source");
26 26
         }

+ 4 - 6
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java Parādīt failu

@@ -9,16 +9,14 @@ import com.xxl.job.core.handler.IJobHandler;
9 9
  */
10 10
 public class GlueJobHandler extends IJobHandler {
11 11
 	
12
-	private String job_group;
13
-	private String job_name;
14
-	public GlueJobHandler(String job_group, String job_name) {
15
-		this.job_group = job_group;
16
-		this.job_name = job_name;
12
+	private int jobId;
13
+	public GlueJobHandler(int jobId) {
14
+		this.jobId = jobId;
17 15
 	}
18 16
 
19 17
 	@Override
20 18
 	public void execute(String... params) throws Exception {
21
-		GlueFactory.glue(job_group, job_name, params);
19
+		GlueFactory.glue(jobId, params);
22 20
 	}
23 21
 
24 22
 }