Pārlūkot izejas kodu

任务组,改为使用执行器ID

xueli.xue 8 gadus atpakaļ
vecāks
revīzija
354f6483b2

+ 3 - 2
db/tables_xxl_job.sql Parādīt failu

@@ -204,12 +204,13 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_REGISTRY (
204 204
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
205 205
 
206 206
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_GROUP (
207
+  `id` int(11) NOT NULL AUTO_INCREMENT,
207 208
   `app_name` varchar(64) NOT NULL,
208 209
   `title` varchar(12) NOT NULL,
209 210
   `order` tinyint(4) NOT NULL,
210
-  PRIMARY KEY (`app_name`)
211
+  PRIMARY KEY (`id`)
211 212
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
212
-INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP VALUES ('xxl-job-executor-example', '示例项目', '1');
213
+INSERT INTO `XXL_JOB_QRTZ_TRIGGER_GROUP` VALUES ('1', 'xxl-job-executor-example', '示例执行器', '1');
213 214
 
214 215
 commit;
215 216
 

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

@@ -60,12 +60,6 @@ public class JobGroupController {
60 60
 			return new ReturnT<String>(500, "请输入名称");
61 61
 		}
62 62
 
63
-		// check repeat
64
-		XxlJobGroup group = xxlJobGroupDao.load(xxlJobGroup.getAppName());
65
-		if (group!=null) {
66
-			return new ReturnT<String>(500, "AppName对应的执行器已存在, 请勿重复添加");
67
-		}
68
-
69 63
 		int ret = xxlJobGroupDao.save(xxlJobGroup);
70 64
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
71 65
 	}
@@ -90,10 +84,10 @@ public class JobGroupController {
90 84
 
91 85
 	@RequestMapping("/remove")
92 86
 	@ResponseBody
93
-	public ReturnT<String> remove(String appName){
87
+	public ReturnT<String> remove(int id){
94 88
 
95 89
 		// valid
96
-		int count = xxlJobInfoDao.pageListCount(0, 10, appName, null);
90
+		int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null);
97 91
 		if (count > 0) {
98 92
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
99 93
 		}
@@ -103,7 +97,7 @@ public class JobGroupController {
103 97
 			return new ReturnT<String>(500, "删除失败, 系统需要至少预留一个默认分组");
104 98
 		}
105 99
 
106
-		int ret = xxlJobGroupDao.remove(appName);
100
+		int ret = xxlJobGroupDao.remove(id);
107 101
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
108 102
 	}
109 103
 

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

@@ -48,7 +48,7 @@ public class JobInfoController {
48 48
 	
49 49
 	@RequestMapping("/add")
50 50
 	@ResponseBody
51
-	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
51
+	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
52 52
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
53 53
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
54 54
 		
@@ -59,7 +59,7 @@ public class JobInfoController {
59 59
 	
60 60
 	@RequestMapping("/reschedule")
61 61
 	@ResponseBody
62
-	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
62
+	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
63 63
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
64 64
 			int glueSwitch, String childJobKey) {
65 65
 

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

@@ -45,6 +45,7 @@ public class JobLogController {
45 45
 	public String index(Model model, String jobGroup, String jobName) {
46 46
 
47 47
 		// 任务组
48
+
48 49
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();
49 50
 
50 51
 		model.addAttribute("jobGroup", jobGroup);

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

@@ -73,7 +73,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
73 73
 			addressList.addAll(addressArr);
74 74
 			parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
75 75
 		} else {
76
-			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(jobInfo.getJobGroup());
76
+			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
77 77
 			if (group!=null) {
78 78
 				addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
79 79
 			}

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java Parādīt failu

@@ -7,6 +7,7 @@ import java.util.List;
7 7
  */
8 8
 public class XxlJobGroup {
9 9
 
10
+    private int id;
10 11
     private String appName;
11 12
     private String title;
12 13
     private int order;
@@ -14,6 +15,14 @@ public class XxlJobGroup {
14 15
     // registry list
15 16
     private List<String> registryList;
16 17
 
18
+    public int getId() {
19
+        return id;
20
+    }
21
+
22
+    public void setId(int id) {
23
+        this.id = id;
24
+    }
25
+
17 26
     public String getAppName() {
18 27
         return appName;
19 28
     }

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

@@ -59,7 +59,7 @@ public class JobMonitorHelper {
59 59
 										Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
60 60
 										for (String email: emailSet) {
61 61
 											String title = "《调度监控报警-任务调度中心XXL-JOB》";
62
-											XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(info.getJobGroup());
62
+											XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup()));
63 63
 											String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc());
64 64
 											MailUtil.sendMail(email, title, content, false, null);
65 65
 										}

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

@@ -15,7 +15,7 @@ public interface IXxlJobGroupDao {
15 15
 
16 16
     public int update(XxlJobGroup xxlJobGroup);
17 17
 
18
-    public int remove(String appName);
18
+    public int remove(int id);
19 19
 
20
-    public XxlJobGroup load(String appName);
20
+    public XxlJobGroup load(int id);
21 21
 }

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

@@ -33,13 +33,13 @@ public class XxlJobGroupDaoImpl implements IXxlJobGroupDao {
33 33
     }
34 34
 
35 35
     @Override
36
-    public int remove(String appName) {
37
-        return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", appName);
36
+    public int remove(int id) {
37
+        return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", id);
38 38
     }
39 39
 
40 40
     @Override
41
-    public XxlJobGroup load(String appName) {
42
-        return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", appName);
41
+    public XxlJobGroup load(int id) {
42
+        return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", id);
43 43
     }
44 44
 
45 45
 

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

@@ -13,11 +13,11 @@ public interface IXxlJobService {
13 13
 	
14 14
 	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
15 15
 	
16
-	public ReturnT<String> add(String 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 17
 			String executorAddress,	String executorHandler, String executorParam,
18 18
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey);
19 19
 	
20
-	public ReturnT<String> reschedule(String 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 21
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
22 22
 	
23 23
 	public ReturnT<String> remove(String jobGroup, String jobName);

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

@@ -64,7 +64,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
64 64
 	}
65 65
 
66 66
 	@Override
67
-	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
67
+	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
68 68
 			String executorAddress,	String executorHandler, String executorParam,
69 69
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
70 70
 		// valid
@@ -106,7 +106,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
106 106
 		// generate jobName
107 107
 		String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date());
108 108
 		try {
109
-			if (DynamicSchedulerUtil.checkExists(jobName, jobGroup)) {
109
+			if (DynamicSchedulerUtil.checkExists(jobName, String.valueOf(jobGroup))) {
110 110
 				return new ReturnT<String>(500, "系统繁忙,请稍后重试");
111 111
 			}
112 112
 		} catch (SchedulerException e1) {
@@ -116,7 +116,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
116 116
 
117 117
 		// Backup to the database
118 118
 		XxlJobInfo jobInfo = new XxlJobInfo();
119
-		jobInfo.setJobGroup(jobGroup);
119
+		jobInfo.setJobGroup(String.valueOf(jobGroup));
120 120
 		jobInfo.setJobName(jobName);
121 121
 		jobInfo.setJobCron(jobCron);
122 122
 		jobInfo.setJobDesc(jobDesc);
@@ -146,7 +146,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
146 146
 	}
147 147
 
148 148
 	@Override
149
-	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
149
+	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
150 150
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
151 151
 
152 152
 		// valid
@@ -189,7 +189,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
189 189
 		}
190 190
 
191 191
 		// stage job info
192
-		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
192
+		XxlJobInfo jobInfo = xxlJobInfoDao.load(String.valueOf(jobGroup), jobName);
193 193
 		jobInfo.setJobCron(jobCron);
194 194
 		jobInfo.setJobDesc(jobDesc);
195 195
 		jobInfo.setAuthor(author);

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

@@ -4,12 +4,14 @@
4 4
 <mapper namespace="XxlJobGroupMapper">
5 5
 	
6 6
 	<resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
7
+		<result column="id" property="id" />
7 8
 	    <result column="app_name" property="appName" />
8 9
 	    <result column="title" property="title" />
9 10
 	    <result column="order" property="order" />
10 11
 	</resultMap>
11 12
 
12 13
 	<sql id="Base_Column_List">
14
+		t.id,
13 15
 		t.app_name,
14 16
 		t.title,
15 17
 		t.order
@@ -21,27 +23,28 @@
21 23
 		ORDER BY t.order ASC
22 24
 	</select>
23 25
 
24
-	<insert id="save" parameterType="java.util.Map" >
26
+	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
25 27
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP ( `app_name`, `title`, `order`)
26 28
 		values ( #{appName}, #{title}, #{order});
27 29
 	</insert>
28 30
 
29
-	<update id="update" parameterType="java.util.Map" >
31
+	<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
30 32
 		UPDATE XXL_JOB_QRTZ_TRIGGER_GROUP
31
-		SET `title` = #{title},
33
+		SET `app_name` = #{appName},
34
+			`title` = #{title},
32 35
 			`order` = #{order}
33
-		WHERE app_name = #{appName}
36
+		WHERE id = #{id}
34 37
 	</update>
35 38
 
36
-	<delete id="remove" parameterType="java.lang.String" >
39
+	<delete id="remove" parameterType="java.lang.Integer" >
37 40
 		DELETE FROM XXL_JOB_QRTZ_TRIGGER_GROUP
38
-		WHERE app_name = #{appName}
41
+		WHERE id = #{id}
39 42
 	</delete>
40 43
 
41
-	<select id="load" parameterType="java.lang.String" resultMap="XxlJobGroup">
44
+	<select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
42 45
 		SELECT <include refid="Base_Column_List" />
43 46
 		FROM XXL_JOB_QRTZ_TRIGGER_GROUP AS t
44
-		WHERE t.app_name = #{appName}
47
+		WHERE t.id = #{id}
45 48
 	</select>
46 49
 
47 50
 </mapper>

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

@@ -37,6 +37,7 @@
37 37
 			              	<table id="joblog_list" class="table table-bordered table-striped display" width="100%" >
38 38
 				                <thead>
39 39
 					            	<tr>
40
+                                        <th name="id" >ID</th>
40 41
                                         <th name="appName" >AppName</th>
41 42
                                         <th name="title" >名称</th>
42 43
 					                  	<th name="order" >排序</th>
@@ -48,13 +49,14 @@
48 49
 								<#if list?exists && list?size gt 0>
49 50
 								<#list list as group>
50 51
 									<tr>
52
+                                        <td>${group.id}</td>
51 53
                                         <td>${group.appName}</td>
52 54
                                         <td>${group.title}</td>
53 55
                                         <td>${group.order}</td>
54 56
                                         <td><#if group.registryList?exists><#list group.registryList as item><span class="badge bg-green">${item}</span><br></#list></#if></td>
55 57
 										<td>
56
-                                            <button class="btn btn-warning btn-xs update" appName="${group.appName}" title="${group.title}" order="${group.order}" >编辑</button>
57
-                                            <button class="btn btn-danger btn-xs remove" appName="${group.appName}" >删除</button>
58
+                                            <button class="btn btn-warning btn-xs update" id="${group.id}" appName="${group.appName}" title="${group.title}" order="${group.order}" >编辑</button>
59
+                                            <button class="btn btn-danger btn-xs remove" id="${group.id}" >删除</button>
58 60
 										</td>
59 61
 									</tr>
60 62
 								</#list>
@@ -113,7 +115,7 @@
113 115
                     <form class="form-horizontal form" role="form" >
114 116
                         <div class="form-group">
115 117
                             <label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
116
-                            <div class="col-sm-10"><input type="text" class="form-control" name="appName" placeholder="请输入“AppName”" maxlength="64" readonly ></div>
118
+                            <div class="col-sm-10"><input type="text" class="form-control" name="appName" placeholder="请输入“AppName”" maxlength="64" ></div>
117 119
                         </div>
118 120
                         <div class="form-group">
119 121
                             <label for="lastname" class="col-sm-2 control-label">名称<font color="red">*</font></label>
@@ -128,6 +130,7 @@
128 130
                             <div class="col-sm-offset-3 col-sm-6">
129 131
                                 <button type="submit" class="btn btn-primary"  >保存</button>
130 132
                                 <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
133
+                                <input type="hidden" name="id" >
131 134
                             </div>
132 135
                         </div>
133 136
                     </form>

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

@@ -43,7 +43,7 @@
43 43
 	                	<span class="input-group-addon">执行器</span>
44 44
                 		<select class="form-control" id="jobGroup" >
45 45
                 			<#list JobGroupList as group>
46
-                				<option value="${group.appName}" >${group.title}</option>
46
+                				<option value="${group.id}" >${group.title}</option>
47 47
                 			</#list>
48 48
 	                  	</select>
49 49
 	              	</div>
@@ -118,7 +118,7 @@
118 118
 						<div class="col-sm-4">
119 119
 							<select class="form-control" name="jobGroup" >
120 120
 		            			<#list JobGroupList as group>
121
-		            				<option value="${group.appName}" >${group.title}</option>
121
+		            				<option value="${group.id}" >${group.title}</option>
122 122
 		            			</#list>
123 123
 		                  	</select>
124 124
 						</div>

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

@@ -38,7 +38,7 @@
38 38
                 		<select class="form-control" id="jobGroup"  paramVal="${jobGroup}" >
39 39
                             <option value="" selected>请选择</option>
40 40
                 			<#list JobGroupList as group>
41
-                				<option value="${group.appName}" <#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 42
                 			</#list>
43 43
 	                  	</select>
44 44
 	              	</div>

+ 3 - 2
xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js Parādīt failu

@@ -2,13 +2,13 @@ $(function() {
2 2
 
3 3
 	// remove
4 4
 	$('.remove').on('click', function(){
5
-		var appName = $(this).attr('appName');
5
+		var id = $(this).attr('id');
6 6
 
7 7
 		ComConfirm.show("确认删除分组?", function(){
8 8
 			$.ajax({
9 9
 				type : 'POST',
10 10
 				url : base_url + '/jobgroup/remove',
11
-				data : {"appName":appName},
11
+				data : {"id":id},
12 12
 				dataType : "json",
13 13
 				success : function(data){
14 14
 					if (data.code == 200) {
@@ -108,6 +108,7 @@ $(function() {
108 108
 	});
109 109
 
110 110
 	$('.update').on('click', function(){
111
+		$("#updateModal .form input[name='id']").val($(this).attr("id"));
111 112
 		$("#updateModal .form input[name='appName']").val($(this).attr("appName"));
112 113
 		$("#updateModal .form input[name='title']").val($(this).attr("title"));
113 114
 		$("#updateModal .form input[name='order']").val($(this).attr("order"));