Parcourir la source

UI以及库中,新增字段 "失败重试次数"

xuxueli il y a 7 ans
Parent
révision
3d15669b3b

+ 2 - 1
doc/db/tables_xxl_job.sql Voir le fichier

163
   `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
163
   `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
164
   `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
164
   `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
165
   `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略',
165
   `executor_fail_strategy` varchar(50) DEFAULT NULL COMMENT '失败处理策略',
166
-  `executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
166
+  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
167
+  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
167
   `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
168
   `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
168
   `glue_source` text COMMENT 'GLUE源代码',
169
   `glue_source` text COMMENT 'GLUE源代码',
169
   `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
170
   `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java Voir le fichier

1
 package com.xxl.job.admin.controller;
1
 package com.xxl.job.admin.controller;
2
 
2
 
3
-import com.xxl.job.admin.core.enums.ExecutorFailStrategyEnum;
4
 import com.xxl.job.admin.core.model.XxlJobGroup;
3
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
 import com.xxl.job.admin.core.model.XxlJobInfo;
6
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
5
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
39
 		model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values());	// 路由策略-列表
38
 		model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values());	// 路由策略-列表
40
 		model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());								// Glue类型-字典
39
 		model.addAttribute("GlueTypeEnum", GlueTypeEnum.values());								// Glue类型-字典
41
 		model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values());	// 阻塞处理策略-字典
40
 		model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values());	// 阻塞处理策略-字典
42
-		model.addAttribute("ExecutorFailStrategyEnum", ExecutorFailStrategyEnum.values());		// 失败处理策略-字典
43
 
41
 
44
 		// 任务组
42
 		// 任务组
45
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();
43
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/core/enums/ExecutorFailStrategyEnum.java Voir le fichier

1
 package com.xxl.job.admin.core.enums;
1
 package com.xxl.job.admin.core.enums;
2
 
2
 
3
-import com.xxl.job.admin.core.util.I18nUtil;
4
-
5
 /**
3
 /**
6
  * Created by xuxueli on 17/5/9.
4
  * Created by xuxueli on 17/5/9.
7
  */
5
  */
6
+
7
+@Deprecated
8
 public enum ExecutorFailStrategyEnum {
8
 public enum ExecutorFailStrategyEnum {
9
 
9
 
10
-    NULL(I18nUtil.getString("jobconf_fail_null")),
10
+    NULL("NULL"),
11
 
11
 
12
-    FAIL_TRIGGER_RETRY(I18nUtil.getString("jobconf_fail_trigger_retry")),
12
+    FAIL_TRIGGER_RETRY("FAIL_TRIGGER_RETRY"),
13
 
13
 
14
-    FAIL_HANDLE_RETRY(I18nUtil.getString("jobconf_fail_handle_retry"));
14
+    FAIL_HANDLE_RETRY("FAIL_HANDLE_RETRY");
15
 
15
 
16
     private final String title;
16
     private final String title;
17
     private ExecutorFailStrategyEnum(String title) {
17
     private ExecutorFailStrategyEnum(String title) {

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java Voir le fichier

27
 	private String executorBlockStrategy;	// 阻塞处理策略
27
 	private String executorBlockStrategy;	// 阻塞处理策略
28
 	private String executorFailStrategy;	// 失败处理策略
28
 	private String executorFailStrategy;	// 失败处理策略
29
 	private int executorTimeout;     		// 任务执行超时时间,单位秒
29
 	private int executorTimeout;     		// 任务执行超时时间,单位秒
30
+	private int executorFailRetryCount;		// 失败重试次数
30
 	
31
 	
31
 	private String glueType;		// GLUE类型	#com.xxl.job.core.glue.GlueTypeEnum
32
 	private String glueType;		// GLUE类型	#com.xxl.job.core.glue.GlueTypeEnum
32
 	private String glueSource;		// GLUE源代码
33
 	private String glueSource;		// GLUE源代码
151
 		this.executorTimeout = executorTimeout;
152
 		this.executorTimeout = executorTimeout;
152
 	}
153
 	}
153
 
154
 
155
+	public int getExecutorFailRetryCount() {
156
+		return executorFailRetryCount;
157
+	}
158
+
159
+	public void setExecutorFailRetryCount(int executorFailRetryCount) {
160
+		this.executorFailRetryCount = executorFailRetryCount;
161
+	}
162
+
154
 	public String getGlueType() {
163
 	public String getGlueType() {
155
 		return glueType;
164
 		return glueType;
156
 	}
165
 	}

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java Voir le fichier

74
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
74
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
75
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle()).append("("+i+"/"+addressList.size()+")"); // update01
75
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle()).append("("+i+"/"+addressList.size()+")"); // update01
76
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
76
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
77
-                triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailStrategy")).append(":").append(failStrategy.getTitle());
77
+                triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(jobInfo.getExecutorFailRetryCount());
78
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
78
                 triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
79
 
79
 
80
                 // 3、trigger-valid
80
                 // 3、trigger-valid
144
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
144
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
145
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle());
145
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorRouteStrategy")).append(":").append(executorRouteStrategyEnum.getTitle());
146
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
146
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorBlockStrategy")).append(":").append(blockStrategy.getTitle());
147
-            triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailStrategy")).append(":").append(failStrategy.getTitle());
147
+            triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(jobInfo.getExecutorFailRetryCount());
148
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
148
             triggerMsgSb.append("<br>").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout());
149
 
149
 
150
             // 3、trigger-valid
150
             // 3、trigger-valid

+ 1 - 7
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java Voir le fichier

1
 package com.xxl.job.admin.service.impl;
1
 package com.xxl.job.admin.service.impl;
2
 
2
 
3
-import com.xxl.job.admin.core.enums.ExecutorFailStrategyEnum;
4
 import com.xxl.job.admin.core.model.XxlJobGroup;
3
 import com.xxl.job.admin.core.model.XxlJobGroup;
5
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
 import com.xxl.job.admin.core.model.XxlJobInfo;
6
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
5
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
90
 		if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
89
 		if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
91
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
90
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
92
 		}
91
 		}
93
-		if (ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), null) == null) {
94
-			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorFailStrategy")+I18nUtil.getString("system_unvalid")) );
95
-		}
96
 		if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) {
92
 		if (GlueTypeEnum.match(jobInfo.getGlueType()) == null) {
97
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype")+I18nUtil.getString("system_unvalid")) );
93
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_gluetype")+I18nUtil.getString("system_unvalid")) );
98
 		}
94
 		}
167
 		if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
163
 		if (ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), null) == null) {
168
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
164
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorBlockStrategy")+I18nUtil.getString("system_unvalid")) );
169
 		}
165
 		}
170
-		if (ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), null) == null) {
171
-			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_executorFailStrategy")+I18nUtil.getString("system_unvalid")));
172
-		}
173
 
166
 
174
 		// ChildJobId valid
167
 		// ChildJobId valid
175
 		if (StringUtils.isNotBlank(jobInfo.getChildJobId())) {
168
 		if (StringUtils.isNotBlank(jobInfo.getChildJobId())) {
210
 		exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
203
 		exists_jobInfo.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
211
 		exists_jobInfo.setExecutorFailStrategy(jobInfo.getExecutorFailStrategy());
204
 		exists_jobInfo.setExecutorFailStrategy(jobInfo.getExecutorFailStrategy());
212
 		exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
205
 		exists_jobInfo.setExecutorTimeout(jobInfo.getExecutorTimeout());
206
+		exists_jobInfo.setExecutorFailRetryCount(jobInfo.getExecutorFailRetryCount());
213
 		exists_jobInfo.setChildJobId(jobInfo.getChildJobId());
207
 		exists_jobInfo.setChildJobId(jobInfo.getChildJobId());
214
         xxlJobInfoDao.update(exists_jobInfo);
208
         xxlJobInfoDao.update(exists_jobInfo);
215
 
209
 

+ 2 - 2
xxl-job-admin/src/main/resources/i18n/message.properties Voir le fichier

116
 jobinfo_field_childJobId_limit=子任务ID({0})不可与父任务重复
116
 jobinfo_field_childJobId_limit=子任务ID({0})不可与父任务重复
117
 jobinfo_field_childJobId_placeholder=请输入子任务的任务ID,如存在多个则逗号分隔
117
 jobinfo_field_childJobId_placeholder=请输入子任务的任务ID,如存在多个则逗号分隔
118
 jobinfo_field_executorBlockStrategy=阻塞处理策略
118
 jobinfo_field_executorBlockStrategy=阻塞处理策略
119
-jobinfo_field_executorFailStrategy=失败处理策略
119
+jobinfo_field_executorFailRetryCount=失败重试次数
120
+jobinfo_field_executorFailRetryCount_placeholder=失败重试次数,大于零时生效
120
 jobinfo_script_location=脚本位置
121
 jobinfo_script_location=脚本位置
121
 jobinfo_shard_index=分片序号
122
 jobinfo_shard_index=分片序号
122
 jobinfo_shard_total=分片总数
123
 jobinfo_shard_total=分片总数
198
 jobconf_block_SERIAL_EXECUTION=单机串行
199
 jobconf_block_SERIAL_EXECUTION=单机串行
199
 jobconf_block_DISCARD_LATER=丢弃后续调度
200
 jobconf_block_DISCARD_LATER=丢弃后续调度
200
 jobconf_block_COVER_EARLY=覆盖之前调度
201
 jobconf_block_COVER_EARLY=覆盖之前调度
201
-jobconf_fail_null=无
202
 jobconf_fail_trigger_retry=调度失败重试
202
 jobconf_fail_trigger_retry=调度失败重试
203
 jobconf_fail_handle_retry=执行失败重试
203
 jobconf_fail_handle_retry=执行失败重试
204
 jobconf_route_first=第一个
204
 jobconf_route_first=第一个

+ 2 - 2
xxl-job-admin/src/main/resources/i18n/message_en.properties Voir le fichier

116
 jobinfo_field_childJobId_limit=Child job ID({0}) cannot be duplicated with the parent job.
116
 jobinfo_field_childJobId_limit=Child job ID({0}) cannot be duplicated with the parent job.
117
 jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
117
 jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
118
 jobinfo_field_executorBlockStrategy=Block Strategy
118
 jobinfo_field_executorBlockStrategy=Block Strategy
119
-jobinfo_field_executorFailStrategy=Fail Strategy
119
+jobinfo_field_executorFailRetryCount=Fail Retry Count
120
+jobinfo_field_executorFailRetryCount_placeholder=Fail Retry Count. effect if greater than zero
120
 jobinfo_script_location=Script location
121
 jobinfo_script_location=Script location
121
 jobinfo_shard_index=Shard index
122
 jobinfo_shard_index=Shard index
122
 jobinfo_shard_total=Shard total
123
 jobinfo_shard_total=Shard total
198
 jobconf_block_SERIAL_EXECUTION=Serial execution
199
 jobconf_block_SERIAL_EXECUTION=Serial execution
199
 jobconf_block_DISCARD_LATER=Discard Later
200
 jobconf_block_DISCARD_LATER=Discard Later
200
 jobconf_block_COVER_EARLY=Cover Early
201
 jobconf_block_COVER_EARLY=Cover Early
201
-jobconf_fail_null=Fail Alarm
202
 jobconf_fail_trigger_retry=Trigger Fail Retry
202
 jobconf_fail_trigger_retry=Trigger Fail Retry
203
 jobconf_fail_handle_retry=Handle Fail Retry
203
 jobconf_fail_handle_retry=Handle Fail Retry
204
 jobconf_route_first=First
204
 jobconf_route_first=First

+ 5 - 0
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml Voir le fichier

22
 		<result column="executor_block_strategy" property="executorBlockStrategy" />
22
 		<result column="executor_block_strategy" property="executorBlockStrategy" />
23
 		<result column="executor_fail_strategy" property="executorFailStrategy" />
23
 		<result column="executor_fail_strategy" property="executorFailStrategy" />
24
 		<result column="executor_timeout" property="executorTimeout" />
24
 		<result column="executor_timeout" property="executorTimeout" />
25
+		<result column="executor_fail_retry_count" property="executorFailRetryCount" />
25
 
26
 
26
 	    <result column="glue_type" property="glueType" />
27
 	    <result column="glue_type" property="glueType" />
27
 	    <result column="glue_source" property="glueSource" />
28
 	    <result column="glue_source" property="glueSource" />
46
 		t.executor_block_strategy,
47
 		t.executor_block_strategy,
47
 		t.executor_fail_strategy,
48
 		t.executor_fail_strategy,
48
 		t.executor_timeout,
49
 		t.executor_timeout,
50
+		t.executor_fail_retry_count,
49
 		t.glue_type,
51
 		t.glue_type,
50
 		t.glue_source,
52
 		t.glue_source,
51
 		t.glue_remark,
53
 		t.glue_remark,
102
 			executor_block_strategy,
104
 			executor_block_strategy,
103
 			executor_fail_strategy,
105
 			executor_fail_strategy,
104
 			executor_timeout,
106
 			executor_timeout,
107
+			executor_fail_retry_count,
105
 			glue_type,
108
 			glue_type,
106
 			glue_source,
109
 			glue_source,
107
 			glue_remark,
110
 			glue_remark,
121
 			#{executorBlockStrategy},
124
 			#{executorBlockStrategy},
122
 			#{executorFailStrategy},
125
 			#{executorFailStrategy},
123
 			#{executorTimeout},
126
 			#{executorTimeout},
127
+			#{executorFailRetryCount},
124
 			#{glueType},
128
 			#{glueType},
125
 			#{glueSource},
129
 			#{glueSource},
126
 			#{glueRemark},
130
 			#{glueRemark},
153
 			executor_block_strategy = #{executorBlockStrategy},
157
 			executor_block_strategy = #{executorBlockStrategy},
154
 			executor_fail_strategy = #{executorFailStrategy},
158
 			executor_fail_strategy = #{executorFailStrategy},
155
 			executor_timeout = ${executorTimeout},
159
 			executor_timeout = ${executorTimeout},
160
+			executor_fail_retry_count = ${executorFailRetryCount},
156
 			glue_type = #{glueType},
161
 			glue_type = #{glueType},
157
 			glue_source = #{glueSource},
162
 			glue_source = #{glueSource},
158
 			glue_remark = #{glueRemark},
163
 			glue_remark = #{glueRemark},

+ 4 - 16
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl Voir le fichier

157
                         </div>
157
                         </div>
158
                     </div>
158
                     </div>
159
                     <div class="form-group">
159
                     <div class="form-group">
160
-                        <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailStrategy}<font color="red">*</font></label>
161
-                        <div class="col-sm-4">
162
-                            <select class="form-control" name="executorFailStrategy" >
163
-								<#list ExecutorFailStrategyEnum as item>
164
-									<option value="${item}" >${item.title}</option>
165
-								</#list>
166
-                            </select>
167
-						</div>
160
+                        <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailRetryCount}<font color="black">*</font></label>
161
+                        <div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" ></div>
168
                         <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
162
                         <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
169
                         <div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
163
                         <div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
170
                     </div>
164
                     </div>
345
                         </div>
339
                         </div>
346
                     </div>
340
                     </div>
347
                     <div class="form-group">
341
                     <div class="form-group">
348
-                        <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailStrategy}<font color="red">*</font></label>
349
-                        <div class="col-sm-4">
350
-                            <select class="form-control" name="executorFailStrategy" >
351
-							<#list ExecutorFailStrategyEnum as item>
352
-                                <option value="${item}" >${item.title}</option>
353
-							</#list>
354
-                            </select>
355
-                        </div>
342
+                        <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailRetryCount}<font color="black">*</font></label>
343
+                        <div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" ></div>
356
                         <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
344
                         <label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
357
                         <div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
345
                         <div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
358
 
346
 

+ 16 - 1
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js Voir le fichier

267
 			},
267
 			},
268
             executorTimeout : {
268
             executorTimeout : {
269
                 digits:true
269
                 digits:true
270
+            },
271
+            executorFailRetryCount : {
272
+                digits:true
270
             }
273
             }
271
         }, 
274
         }, 
272
         messages : {  
275
         messages : {  
278
             },
281
             },
279
             author : {
282
             author : {
280
             	required : I18n.system_please_input + I18n.jobinfo_field_author
283
             	required : I18n.system_please_input + I18n.jobinfo_field_author
284
+            },
285
+            executorTimeout : {
286
+                digits: I18n.system_please_input + I18n.system_digits
287
+            },
288
+            executorFailRetryCount : {
289
+                digits: I18n.system_please_input + I18n.system_digits
281
             }
290
             }
282
         },
291
         },
283
 		highlight : function(element) {  
292
 		highlight : function(element) {  
376
 		$("#updateModal .form input[name='author']").val( row.author );
385
 		$("#updateModal .form input[name='author']").val( row.author );
377
 		$("#updateModal .form input[name='alarmEmail']").val( row.alarmEmail );
386
 		$("#updateModal .form input[name='alarmEmail']").val( row.alarmEmail );
378
 		$("#updateModal .form input[name='executorTimeout']").val( row.executorTimeout );
387
 		$("#updateModal .form input[name='executorTimeout']").val( row.executorTimeout );
388
+        $("#updateModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
379
 		$('#updateModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
389
 		$('#updateModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
380
 		$("#updateModal .form input[name='executorHandler']").val( row.executorHandler );
390
 		$("#updateModal .form input[name='executorHandler']").val( row.executorHandler );
381
 		$("#updateModal .form input[name='executorParam']").val( row.executorParam );
391
 		$("#updateModal .form input[name='executorParam']").val( row.executorParam );
382
         $("#updateModal .form input[name='childJobId']").val( row.childJobId );
392
         $("#updateModal .form input[name='childJobId']").val( row.childJobId );
383
 		$('#updateModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
393
 		$('#updateModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
384
-		$('#updateModal .form select[name=executorFailStrategy] option[value='+ row.executorFailStrategy +']').prop('selected', true);
385
 		$('#updateModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
394
 		$('#updateModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
386
 
395
 
387
         $("#updateModal .form select[name=glueType]").change();
396
         $("#updateModal .form select[name=glueType]").change();
407
 			},
416
 			},
408
             executorTimeout : {
417
             executorTimeout : {
409
                 digits:true
418
                 digits:true
419
+            },
420
+            executorFailRetryCount : {
421
+                digits:true
410
             }
422
             }
411
 		},
423
 		},
412
 		messages : {
424
 		messages : {
421
 			},
433
 			},
422
             executorTimeout : {
434
             executorTimeout : {
423
                 digits: I18n.system_please_input + I18n.system_digits
435
                 digits: I18n.system_please_input + I18n.system_digits
436
+            },
437
+            executorFailRetryCount : {
438
+                digits: I18n.system_please_input + I18n.system_digits
424
             }
439
             }
425
 		},
440
 		},
426
 		highlight : function(element) {
441
 		highlight : function(element) {