mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2026-02-06 02:25:30 +08:00
修复#6903,升级xxl-job 至2.4.1版本,规避CVE-2024-24113
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
server:
|
||||
port: 9080
|
||||
servlet:
|
||||
context-path: /xxl-job-admin
|
||||
context-path: /xxl-job-admin
|
||||
#数据源配置
|
||||
spring:
|
||||
datasource:
|
||||
@ -24,6 +24,7 @@ spring:
|
||||
host: smtphz.qiye.163.com
|
||||
port: 994
|
||||
username: zhuwei@aboatedu.com
|
||||
from: zhuwei@aboatedu.com
|
||||
password: zwass1314
|
||||
properties:
|
||||
mail:
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
admin_name=Scheduling Center
|
||||
admin_name_full=Distributed Task Scheduling Platform XXL-JOB
|
||||
admin_version=2.2.0
|
||||
admin_version=2.4.2-SNAPSHOT
|
||||
admin_i18n=en
|
||||
|
||||
## system
|
||||
@ -117,8 +117,6 @@ jobinfo_field_jobdesc=Job description
|
||||
jobinfo_field_timeout=Job timeout period
|
||||
jobinfo_field_gluetype=GLUE Type
|
||||
jobinfo_field_executorparam=Param
|
||||
jobinfo_field_cron_unvalid=The Cron is illegal
|
||||
jobinfo_field_cron_never_fire=The Cron will never fire
|
||||
jobinfo_field_author=Author
|
||||
jobinfo_field_alarmemail=Alarm email
|
||||
jobinfo_field_alarmemail_placeholder=Please enter alarm mail, if there are more than one comma separated
|
||||
@ -144,6 +142,19 @@ jobinfo_glue_rollback=Version Backtrack
|
||||
jobinfo_glue_jobid_unvalid=Job ID is illegal
|
||||
jobinfo_glue_gluetype_unvalid=The job is not GLUE Type
|
||||
jobinfo_field_executorTimeout_placeholder=Job Timeout period,in seconds. effect if greater than zero
|
||||
schedule_type=Schedule Type
|
||||
schedule_type_none=None
|
||||
schedule_type_cron=Cron
|
||||
schedule_type_fix_rate=Fix rate
|
||||
schedule_type_fix_delay=Fix delay
|
||||
schedule_type_none_limit_start=The current schedule type disables startup
|
||||
misfire_strategy=Misfire strategy
|
||||
misfire_strategy_do_nothing=Do nothing
|
||||
misfire_strategy_fire_once_now=Fire once now
|
||||
jobinfo_conf_base=Base configuration
|
||||
jobinfo_conf_schedule=Schedule configuration
|
||||
jobinfo_conf_job=Job configuration
|
||||
jobinfo_conf_advanced=Advanced configuration
|
||||
|
||||
## job log
|
||||
joblog_name=Trigger Log
|
||||
@ -243,6 +254,7 @@ jobconf_trigger_type_manual=Manual trigger
|
||||
jobconf_trigger_type_parent=Parent job trigger
|
||||
jobconf_trigger_type_api=Api trigger
|
||||
jobconf_trigger_type_retry=Fail retry trigger
|
||||
jobconf_trigger_type_misfire=Misfire compensation trigger
|
||||
|
||||
## user
|
||||
user_manage=User Manage
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
admin_name=任务调度中心
|
||||
admin_name_full=分布式任务调度平台XXL-JOB
|
||||
admin_version=2.2.0
|
||||
admin_version=2.4.2-SNAPSHOT
|
||||
admin_i18n=
|
||||
|
||||
## system
|
||||
@ -116,8 +116,6 @@ jobinfo_field_jobgroup=执行器
|
||||
jobinfo_field_jobdesc=任务描述
|
||||
jobinfo_field_gluetype=运行模式
|
||||
jobinfo_field_executorparam=任务参数
|
||||
jobinfo_field_cron_unvalid=Cron格式非法
|
||||
jobinfo_field_cron_never_fire=Cron非法,永远不会触发
|
||||
jobinfo_field_author=负责人
|
||||
jobinfo_field_timeout=任务超时时间
|
||||
jobinfo_field_alarmemail=报警邮件
|
||||
@ -144,6 +142,19 @@ jobinfo_glue_rollback=版本回溯
|
||||
jobinfo_glue_jobid_unvalid=任务ID非法
|
||||
jobinfo_glue_gluetype_unvalid=该任务非GLUE模式
|
||||
jobinfo_field_executorTimeout_placeholder=任务超时时间,单位秒,大于零时生效
|
||||
schedule_type=调度类型
|
||||
schedule_type_none=无
|
||||
schedule_type_cron=CRON
|
||||
schedule_type_fix_rate=固定速度
|
||||
schedule_type_fix_delay=固定延迟
|
||||
schedule_type_none_limit_start=当前调度类型禁止启动
|
||||
misfire_strategy=调度过期策略
|
||||
misfire_strategy_do_nothing=忽略
|
||||
misfire_strategy_fire_once_now=立即执行一次
|
||||
jobinfo_conf_base=基础配置
|
||||
jobinfo_conf_schedule=调度配置
|
||||
jobinfo_conf_job=任务配置
|
||||
jobinfo_conf_advanced=高级配置
|
||||
|
||||
## job log
|
||||
joblog_name=调度日志
|
||||
@ -243,6 +254,7 @@ jobconf_trigger_type_manual=手动触发
|
||||
jobconf_trigger_type_parent=父任务触发
|
||||
jobconf_trigger_type_api=API触发
|
||||
jobconf_trigger_type_retry=失败重试触发
|
||||
jobconf_trigger_type_misfire=调度过期补偿
|
||||
|
||||
## user
|
||||
user_manage=用户管理
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
admin_name=任務調度中心
|
||||
admin_name_full=分布式任務調度平臺XXL-JOB
|
||||
admin_version=2.2.0
|
||||
admin_version=2.4.2-SNAPSHOT
|
||||
admin_i18n=
|
||||
|
||||
## system
|
||||
@ -116,8 +116,6 @@ jobinfo_field_jobgroup=執行器
|
||||
jobinfo_field_jobdesc=任務描述
|
||||
jobinfo_field_gluetype=運行模式
|
||||
jobinfo_field_executorparam=任務參數
|
||||
jobinfo_field_cron_unvalid=Cron 格式非法
|
||||
jobinfo_field_cron_never_fire=Cron 格式非法,永遠不會觸發
|
||||
jobinfo_field_author=負責人
|
||||
jobinfo_field_timeout=任務超時秒數
|
||||
jobinfo_field_alarmemail=告警郵件
|
||||
@ -144,6 +142,19 @@ jobinfo_glue_rollback=版本回復
|
||||
jobinfo_glue_jobid_unvalid=任務ID非法
|
||||
jobinfo_glue_gluetype_unvalid=該任務非GLUE模式
|
||||
jobinfo_field_executorTimeout_placeholder=任務超時時間,單位秒,大於零時生效
|
||||
schedule_type=調度類型
|
||||
schedule_type_none=無
|
||||
schedule_type_cron=CRON
|
||||
schedule_type_fix_rate=固定速度
|
||||
schedule_type_fix_delay=固定延遲
|
||||
schedule_type_none_limit_start=當前調度類型禁止啟動
|
||||
misfire_strategy=調度過期策略
|
||||
misfire_strategy_do_nothing=忽略
|
||||
misfire_strategy_fire_once_now=立即執行壹次
|
||||
jobinfo_conf_base=基礎配置
|
||||
jobinfo_conf_schedule=調度配置
|
||||
jobinfo_conf_job=任務配置
|
||||
jobinfo_conf_advanced=高級配置
|
||||
|
||||
## job log
|
||||
joblog_name=調度日誌
|
||||
@ -243,6 +254,7 @@ jobconf_trigger_type_manual=手動觸發
|
||||
jobconf_trigger_type_parent=父任務觸發
|
||||
jobconf_trigger_type_api=API觸發
|
||||
jobconf_trigger_type_retry=失敗重試觸發
|
||||
jobconf_trigger_type_misfire=調度過期補償
|
||||
|
||||
## user
|
||||
user_manage=用户管理
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<configuration debug="false" scan="true" scanPeriod="1 seconds">
|
||||
|
||||
<contextName>logback</contextName>
|
||||
<property name="log.path" value="../xxl-job/xxl-job-admin.log"/>
|
||||
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>
|
||||
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
<result column="title" property="title" />
|
||||
<result column="address_type" property="addressType" />
|
||||
<result column="address_list" property="addressList" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
@ -16,7 +17,8 @@
|
||||
t.app_name,
|
||||
t.title,
|
||||
t.address_type,
|
||||
t.address_list
|
||||
t.address_list,
|
||||
t.update_time
|
||||
</sql>
|
||||
|
||||
<select id="findAll" resultMap="XxlJobGroup">
|
||||
@ -33,8 +35,8 @@
|
||||
</select>
|
||||
|
||||
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" useGeneratedKeys="true" keyProperty="id" >
|
||||
INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`)
|
||||
values ( #{appname}, #{title}, #{addressType}, #{addressList});
|
||||
INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`, `update_time`)
|
||||
values ( #{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime} );
|
||||
</insert>
|
||||
|
||||
<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
|
||||
@ -42,7 +44,8 @@
|
||||
SET `app_name` = #{appname},
|
||||
`title` = #{title},
|
||||
`address_type` = #{addressType},
|
||||
`address_list` = #{addressList}
|
||||
`address_list` = #{addressList},
|
||||
`update_time` = #{updateTime}
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@
|
||||
<result column="id" property="id" />
|
||||
|
||||
<result column="job_group" property="jobGroup" />
|
||||
<result column="job_cron" property="jobCron" />
|
||||
<result column="job_desc" property="jobDesc" />
|
||||
|
||||
<result column="add_time" property="addTime" />
|
||||
@ -16,6 +15,10 @@
|
||||
<result column="author" property="author" />
|
||||
<result column="alarm_email" property="alarmEmail" />
|
||||
|
||||
<result column="schedule_type" property="scheduleType" />
|
||||
<result column="schedule_conf" property="scheduleConf" />
|
||||
<result column="misfire_strategy" property="misfireStrategy" />
|
||||
|
||||
<result column="executor_route_strategy" property="executorRouteStrategy" />
|
||||
<result column="executor_handler" property="executorHandler" />
|
||||
<result column="executor_param" property="executorParam" />
|
||||
@ -38,12 +41,14 @@
|
||||
<sql id="Base_Column_List">
|
||||
t.id,
|
||||
t.job_group,
|
||||
t.job_cron,
|
||||
t.job_desc,
|
||||
t.add_time,
|
||||
t.update_time,
|
||||
t.author,
|
||||
t.alarm_email,
|
||||
t.schedule_type,
|
||||
t.schedule_conf,
|
||||
t.misfire_strategy,
|
||||
t.executor_route_strategy,
|
||||
t.executor_handler,
|
||||
t.executor_param,
|
||||
@ -109,12 +114,14 @@
|
||||
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
|
||||
INSERT INTO xxl_job_info (
|
||||
job_group,
|
||||
job_cron,
|
||||
job_desc,
|
||||
add_time,
|
||||
update_time,
|
||||
author,
|
||||
alarm_email,
|
||||
schedule_type,
|
||||
schedule_conf,
|
||||
misfire_strategy,
|
||||
executor_route_strategy,
|
||||
executor_handler,
|
||||
executor_param,
|
||||
@ -131,12 +138,14 @@
|
||||
trigger_next_time
|
||||
) VALUES (
|
||||
#{jobGroup},
|
||||
#{jobCron},
|
||||
#{jobDesc},
|
||||
#{addTime},
|
||||
#{updateTime},
|
||||
#{author},
|
||||
#{alarmEmail},
|
||||
#{scheduleType},
|
||||
#{scheduleConf},
|
||||
#{misfireStrategy},
|
||||
#{executorRouteStrategy},
|
||||
#{executorHandler},
|
||||
#{executorParam},
|
||||
@ -168,11 +177,13 @@
|
||||
UPDATE xxl_job_info
|
||||
SET
|
||||
job_group = #{jobGroup},
|
||||
job_cron = #{jobCron},
|
||||
job_desc = #{jobDesc},
|
||||
update_time = #{updateTime},
|
||||
author = #{author},
|
||||
alarm_email = #{alarmEmail},
|
||||
schedule_type = #{scheduleType},
|
||||
schedule_conf = #{scheduleConf},
|
||||
misfire_strategy = #{misfireStrategy},
|
||||
executor_route_strategy = #{executorRouteStrategy},
|
||||
executor_handler = #{executorHandler},
|
||||
executor_param = #{executorParam},
|
||||
|
||||
@ -247,15 +247,27 @@
|
||||
</update>
|
||||
|
||||
<select id="findLostJobIds" resultType="long" >
|
||||
SELECT t.id
|
||||
FROM xxl_job_log AS t
|
||||
WHERE t.trigger_code = 200
|
||||
and t.handle_code = 0
|
||||
and t.trigger_time <![CDATA[ <= ]]> #{losedTime}
|
||||
and t.executor_address not in (
|
||||
SELECT t2.registry_value
|
||||
FROM xxl_job_registry AS t2
|
||||
)
|
||||
SELECT
|
||||
t.id
|
||||
FROM
|
||||
xxl_job_log t
|
||||
LEFT JOIN xxl_job_registry t2 ON t.executor_address = t2.registry_value
|
||||
WHERE
|
||||
t.trigger_code = 200
|
||||
AND t.handle_code = 0
|
||||
AND t.trigger_time <![CDATA[ <= ]]> #{losedTime}
|
||||
AND t2.id IS NULL;
|
||||
</select>
|
||||
<!--
|
||||
SELECT t.id
|
||||
FROM xxl_job_log AS t
|
||||
WHERE t.trigger_code = 200
|
||||
and t.handle_code = 0
|
||||
and t.trigger_time <![CDATA[ <= ]]> #{losedTime}
|
||||
and t.executor_address not in (
|
||||
SELECT t2.registry_value
|
||||
FROM xxl_job_registry AS t2
|
||||
)
|
||||
-->
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -123,7 +123,7 @@ $(function() {
|
||||
var id = $(this).attr("_id");
|
||||
var row = tableData['key'+id];
|
||||
|
||||
var html = '<div>';
|
||||
/*var html = '<div>';
|
||||
if (row.registryList) {
|
||||
for (var index in row.registryList) {
|
||||
html += (parseInt(index)+1) + '. <span class="badge bg-green" >' + row.registryList[index] + '</span><br>';
|
||||
@ -135,8 +135,19 @@ $(function() {
|
||||
title: I18n.jobinfo_opt_registryinfo ,
|
||||
btn: [ I18n.system_ok ],
|
||||
content: html
|
||||
});
|
||||
});*/
|
||||
|
||||
var html = '<table class="table table-bordered"><tbody>';
|
||||
if (row.registryList) {
|
||||
for (var index in row.registryList) {
|
||||
html += '<tr><th>' + (parseInt(index)+1) + '</th>';
|
||||
html += '<th><span class="badge bg-green" >' + row.registryList[index] + '</span></th><tr>';
|
||||
}
|
||||
}
|
||||
html += '</tbody></table>';
|
||||
|
||||
$('#showRegistryListModal .data').html(html);
|
||||
$('#showRegistryListModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||||
});
|
||||
|
||||
|
||||
|
||||
@ -48,6 +48,18 @@ $(function() {
|
||||
"visible" : true,
|
||||
"width":'25%'
|
||||
},
|
||||
{
|
||||
"data": 'scheduleType',
|
||||
"visible" : true,
|
||||
"width":'13%',
|
||||
"render": function ( data, type, row ) {
|
||||
if (row.scheduleConf) {
|
||||
return row.scheduleType + ':'+ row.scheduleConf;
|
||||
} else {
|
||||
return row.scheduleType;
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"data": 'glueType',
|
||||
"width":'25%',
|
||||
@ -62,11 +74,6 @@ $(function() {
|
||||
}
|
||||
},
|
||||
{ "data": 'executorParam', "visible" : false},
|
||||
{
|
||||
"data": 'jobCron',
|
||||
"visible" : true,
|
||||
"width":'13%'
|
||||
},
|
||||
{
|
||||
"data": 'addTime',
|
||||
"visible" : false,
|
||||
@ -111,10 +118,16 @@ $(function() {
|
||||
start_stop_div = '<li><a href="javascript:void(0);" class="job_operate" _type="job_resume" >'+ I18n.jobinfo_opt_start +'</a></li>\n';
|
||||
}
|
||||
|
||||
// job_next_time_html
|
||||
var job_next_time_html = '';
|
||||
if (row.scheduleType == 'CRON' || row.scheduleType == 'FIX_RATE') {
|
||||
job_next_time_html = '<li><a href="javascript:void(0);" class="job_next_time" >' + I18n.jobinfo_opt_next_time + '</a></li>\n';
|
||||
}
|
||||
|
||||
// log url
|
||||
var logHref = base_url +'/joblog?jobId='+ row.id;
|
||||
|
||||
// log url
|
||||
// code url
|
||||
var codeBtn = "";
|
||||
if ('BEAN' != row.glueType) {
|
||||
var codeUrl = base_url +'/jobcode?jobId='+ row.id;
|
||||
@ -136,7 +149,7 @@ $(function() {
|
||||
' <li><a href="javascript:void(0);" class="job_trigger" >'+ I18n.jobinfo_opt_run +'</a></li>\n' +
|
||||
' <li><a href="'+ logHref +'">'+ I18n.jobinfo_opt_log +'</a></li>\n' +
|
||||
' <li><a href="javascript:void(0);" class="job_registryinfo" >' + I18n.jobinfo_opt_registryinfo + '</a></li>\n' +
|
||||
' <li><a href="javascript:void(0);" class="job_next_time" >' + I18n.jobinfo_opt_next_time + '</a></li>\n' +
|
||||
job_next_time_html +
|
||||
' <li class="divider"></li>\n' +
|
||||
codeBtn +
|
||||
start_stop_div +
|
||||
@ -322,17 +335,16 @@ $(function() {
|
||||
var id = $(this).parents('ul').attr("_id");
|
||||
var row = tableData['key'+id];
|
||||
|
||||
var jobCron = row.jobCron;
|
||||
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : base_url + "/jobinfo/nextTriggerTime",
|
||||
data : {
|
||||
"cron" : jobCron
|
||||
"scheduleType" : row.scheduleType,
|
||||
"scheduleConf" : row.scheduleConf
|
||||
},
|
||||
dataType : "json",
|
||||
success : function(data){
|
||||
|
||||
|
||||
if (data.code != 200) {
|
||||
layer.open({
|
||||
title: I18n.jobinfo_opt_next_time ,
|
||||
@ -364,8 +376,14 @@ $(function() {
|
||||
$(".add").click(function(){
|
||||
|
||||
// init-cronGen
|
||||
$("#addModal .form input[name='jobCron']").show().siblings().remove();
|
||||
$("#addModal .form input[name='jobCron']").cronGen({});
|
||||
$("#addModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||||
$("#addModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||||
|
||||
// 》init scheduleType
|
||||
$("#updateModal .form select[name=scheduleType]").change();
|
||||
|
||||
// 》init glueType
|
||||
$("#updateModal .form select[name=glueType]").change();
|
||||
|
||||
$('#addModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||||
});
|
||||
@ -378,35 +396,29 @@ $(function() {
|
||||
required : true,
|
||||
maxlength: 50
|
||||
},
|
||||
jobCron : {
|
||||
required : true
|
||||
},
|
||||
author : {
|
||||
required : true
|
||||
},
|
||||
}/*,
|
||||
executorTimeout : {
|
||||
digits:true
|
||||
},
|
||||
executorFailRetryCount : {
|
||||
digits:true
|
||||
}
|
||||
}*/
|
||||
},
|
||||
messages : {
|
||||
jobDesc : {
|
||||
required : I18n.system_please_input + I18n.jobinfo_field_jobdesc
|
||||
},
|
||||
jobCron : {
|
||||
required : I18n.system_please_input + "Cron"
|
||||
},
|
||||
author : {
|
||||
required : I18n.system_please_input + I18n.jobinfo_field_author
|
||||
},
|
||||
}/*,
|
||||
executorTimeout : {
|
||||
digits: I18n.system_please_input + I18n.system_digits
|
||||
},
|
||||
executorFailRetryCount : {
|
||||
digits: I18n.system_please_input + I18n.system_digits
|
||||
}
|
||||
}*/
|
||||
},
|
||||
highlight : function(element) {
|
||||
$(element).closest('.form-group').addClass('has-error');
|
||||
@ -420,7 +432,7 @@ $(function() {
|
||||
},
|
||||
submitHandler : function(form) {
|
||||
|
||||
// process
|
||||
// process executorTimeout+executorFailRetryCount
|
||||
var executorTimeout = $("#addModal .form input[name='executorTimeout']").val();
|
||||
if(!/^\d+$/.test(executorTimeout)) {
|
||||
executorTimeout = 0;
|
||||
@ -432,8 +444,17 @@ $(function() {
|
||||
}
|
||||
$("#addModal .form input[name='executorFailRetryCount']").val(executorFailRetryCount);
|
||||
|
||||
// process-cronGen
|
||||
$("#addModal .form input[name='jobCron']").val( $("#addModal .form input[name='cronGen_display']").val() );
|
||||
// process schedule_conf
|
||||
var scheduleType = $("#addModal .form select[name='scheduleType']").val();
|
||||
var scheduleConf;
|
||||
if (scheduleType == 'CRON') {
|
||||
scheduleConf = $("#addModal .form input[name='cronGen_display']").val();
|
||||
} else if (scheduleType == 'FIX_RATE') {
|
||||
scheduleConf = $("#addModal .form input[name='schedule_conf_FIX_RATE']").val();
|
||||
} else if (scheduleType == 'FIX_DELAY') {
|
||||
scheduleConf = $("#addModal .form input[name='schedule_conf_FIX_DELAY']").val();
|
||||
}
|
||||
$("#addModal .form input[name='scheduleConf']").val( scheduleConf );
|
||||
|
||||
$.post(base_url + "/jobinfo/add", $("#addModal .form").serialize(), function(data, status) {
|
||||
if (data.code == "200") {
|
||||
@ -468,6 +489,13 @@ $(function() {
|
||||
$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
|
||||
});
|
||||
|
||||
// scheduleType change
|
||||
$(".scheduleType").change(function(){
|
||||
var scheduleType = $(this).val();
|
||||
$(this).parents("form").find(".schedule_conf").hide();
|
||||
$(this).parents("form").find(".schedule_conf_" + scheduleType).show();
|
||||
|
||||
});
|
||||
|
||||
// glueType change
|
||||
$(".glueType").change(function(){
|
||||
@ -508,27 +536,46 @@ $(function() {
|
||||
var id = $(this).parents('ul').attr("_id");
|
||||
var row = tableData['key'+id];
|
||||
|
||||
// base data
|
||||
// fill base
|
||||
$("#updateModal .form input[name='id']").val( row.id );
|
||||
$('#updateModal .form select[name=jobGroup] option[value='+ row.jobGroup +']').prop('selected', true);
|
||||
$("#updateModal .form input[name='jobDesc']").val( row.jobDesc );
|
||||
$("#updateModal .form input[name='jobCron']").val( row.jobCron );
|
||||
$("#updateModal .form input[name='author']").val( row.author );
|
||||
$("#updateModal .form input[name='alarmEmail']").val( row.alarmEmail );
|
||||
$("#updateModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||||
$("#updateModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||||
$('#updateModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||||
|
||||
// fill trigger
|
||||
$('#updateModal .form select[name=scheduleType] option[value='+ row.scheduleType +']').prop('selected', true);
|
||||
$("#updateModal .form input[name='scheduleConf']").val( row.scheduleConf );
|
||||
if (row.scheduleType == 'CRON') {
|
||||
$("#updateModal .form input[name='schedule_conf_CRON']").val( row.scheduleConf );
|
||||
} else if (row.scheduleType == 'FIX_RATE') {
|
||||
$("#updateModal .form input[name='schedule_conf_FIX_RATE']").val( row.scheduleConf );
|
||||
} else if (row.scheduleType == 'FIX_DELAY') {
|
||||
$("#updateModal .form input[name='schedule_conf_FIX_DELAY']").val( row.scheduleConf );
|
||||
}
|
||||
|
||||
// 》init scheduleType
|
||||
$("#updateModal .form select[name=scheduleType]").change();
|
||||
|
||||
// fill job
|
||||
$('#updateModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||||
$("#updateModal .form input[name='executorHandler']").val( row.executorHandler );
|
||||
$("#updateModal .form textarea[name='executorParam']").val( row.executorParam );
|
||||
$("#updateModal .form input[name='childJobId']").val( row.childJobId );
|
||||
|
||||
// 》init glueType
|
||||
$("#updateModal .form select[name=glueType]").change();
|
||||
|
||||
// 》init-cronGen
|
||||
$("#updateModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||||
$("#updateModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||||
|
||||
// fill advanced
|
||||
$('#updateModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||||
$("#updateModal .form input[name='childJobId']").val( row.childJobId );
|
||||
$('#updateModal .form select[name=misfireStrategy] option[value='+ row.misfireStrategy +']').prop('selected', true);
|
||||
$('#updateModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
|
||||
$('#updateModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||||
|
||||
$("#updateModal .form select[name=glueType]").change();
|
||||
|
||||
// init-cronGen
|
||||
$("#updateModal .form input[name='jobCron']").show().siblings().remove();
|
||||
$("#updateModal .form input[name='jobCron']").cronGen({});
|
||||
$("#updateModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||||
$("#updateModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||||
|
||||
// show
|
||||
$('#updateModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||||
@ -543,35 +590,17 @@ $(function() {
|
||||
required : true,
|
||||
maxlength: 50
|
||||
},
|
||||
jobCron : {
|
||||
required : true
|
||||
},
|
||||
author : {
|
||||
required : true
|
||||
},
|
||||
executorTimeout : {
|
||||
digits:true
|
||||
},
|
||||
executorFailRetryCount : {
|
||||
digits:true
|
||||
}
|
||||
}
|
||||
},
|
||||
messages : {
|
||||
jobDesc : {
|
||||
required : I18n.system_please_input + I18n.jobinfo_field_jobdesc
|
||||
},
|
||||
jobCron : {
|
||||
required : I18n.system_please_input + "Cron"
|
||||
},
|
||||
author : {
|
||||
required : I18n.system_please_input + I18n.jobinfo_field_author
|
||||
},
|
||||
executorTimeout : {
|
||||
digits: I18n.system_please_input + I18n.system_digits
|
||||
},
|
||||
executorFailRetryCount : {
|
||||
digits: I18n.system_please_input + I18n.system_digits
|
||||
}
|
||||
}
|
||||
},
|
||||
highlight : function(element) {
|
||||
$(element).closest('.form-group').addClass('has-error');
|
||||
@ -585,7 +614,7 @@ $(function() {
|
||||
},
|
||||
submitHandler : function(form) {
|
||||
|
||||
// process
|
||||
// process executorTimeout + executorFailRetryCount
|
||||
var executorTimeout = $("#updateModal .form input[name='executorTimeout']").val();
|
||||
if(!/^\d+$/.test(executorTimeout)) {
|
||||
executorTimeout = 0;
|
||||
@ -597,8 +626,18 @@ $(function() {
|
||||
}
|
||||
$("#updateModal .form input[name='executorFailRetryCount']").val(executorFailRetryCount);
|
||||
|
||||
// process-cronGen
|
||||
$("#updateModal .form input[name='jobCron']").val( $("#updateModal .form input[name='cronGen_display']").val() );
|
||||
|
||||
// process schedule_conf
|
||||
var scheduleType = $("#updateModal .form select[name='scheduleType']").val();
|
||||
var scheduleConf;
|
||||
if (scheduleType == 'CRON') {
|
||||
scheduleConf = $("#updateModal .form input[name='cronGen_display']").val();
|
||||
} else if (scheduleType == 'FIX_RATE') {
|
||||
scheduleConf = $("#updateModal .form input[name='schedule_conf_FIX_RATE']").val();
|
||||
} else if (scheduleType == 'FIX_DELAY') {
|
||||
scheduleConf = $("#updateModal .form input[name='schedule_conf_FIX_DELAY']").val();
|
||||
}
|
||||
$("#updateModal .form input[name='scheduleConf']").val( scheduleConf );
|
||||
|
||||
// post
|
||||
$.post(base_url + "/jobinfo/update", $("#updateModal .form").serialize(), function(data, status) {
|
||||
@ -653,27 +692,45 @@ $(function() {
|
||||
var id = $(this).parents('ul').attr("_id");
|
||||
var row = tableData['key'+id];
|
||||
|
||||
// base data
|
||||
//$("#addModal .form input[name='id']").val( row.id );
|
||||
// fill base
|
||||
$('#addModal .form select[name=jobGroup] option[value='+ row.jobGroup +']').prop('selected', true);
|
||||
$("#addModal .form input[name='jobDesc']").val( row.jobDesc );
|
||||
$("#addModal .form input[name='jobCron']").val( row.jobCron );
|
||||
$("#addModal .form input[name='author']").val( row.author );
|
||||
$("#addModal .form input[name='alarmEmail']").val( row.alarmEmail );
|
||||
$("#addModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||||
$("#addModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||||
$('#addModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||||
|
||||
// fill trigger
|
||||
$('#addModal .form select[name=scheduleType] option[value='+ row.scheduleType +']').prop('selected', true);
|
||||
$("#addModal .form input[name='scheduleConf']").val( row.scheduleConf );
|
||||
if (row.scheduleType == 'CRON') {
|
||||
$("#addModal .form input[name='schedule_conf_CRON']").val( row.scheduleConf );
|
||||
} else if (row.scheduleType == 'FIX_RATE') {
|
||||
$("#addModal .form input[name='schedule_conf_FIX_RATE']").val( row.scheduleConf );
|
||||
} else if (row.scheduleType == 'FIX_DELAY') {
|
||||
$("#addModal .form input[name='schedule_conf_FIX_DELAY']").val( row.scheduleConf );
|
||||
}
|
||||
|
||||
// 》init scheduleType
|
||||
$("#addModal .form select[name=scheduleType]").change();
|
||||
|
||||
// fill job
|
||||
$('#addModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||||
$("#addModal .form input[name='executorHandler']").val( row.executorHandler );
|
||||
$("#addModal .form textarea[name='executorParam']").val( row.executorParam );
|
||||
$("#addModal .form input[name='childJobId']").val( row.childJobId );
|
||||
$('#addModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
|
||||
$('#addModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||||
|
||||
// 》init glueType
|
||||
$("#addModal .form select[name=glueType]").change();
|
||||
|
||||
// init-cronGen
|
||||
$("#addModal .form input[name='jobCron']").show().siblings().remove();
|
||||
$("#addModal .form input[name='jobCron']").cronGen({});
|
||||
// 》init-cronGen
|
||||
$("#addModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||||
$("#addModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||||
|
||||
// fill advanced
|
||||
$('#addModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||||
$("#addModal .form input[name='childJobId']").val( row.childJobId );
|
||||
$('#addModal .form select[name=misfireStrategy] option[value='+ row.misfireStrategy +']').prop('selected', true);
|
||||
$('#addModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
|
||||
$("#addModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||||
$("#addModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||||
|
||||
// show
|
||||
$('#addModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||||
|
||||
@ -25,8 +25,6 @@ $(function() {
|
||||
async: false, // sync, make log ordered
|
||||
url : base_url + '/joblog/logDetailCat',
|
||||
data : {
|
||||
"executorAddress":executorAddress,
|
||||
"triggerTime":triggerTime,
|
||||
"logId":logId,
|
||||
"fromLineNum":fromLineNum
|
||||
},
|
||||
|
||||
@ -116,7 +116,7 @@ $(function() {
|
||||
"data": 'triggerTime',
|
||||
"width":'20%',
|
||||
"render": function ( data, type, row ) {
|
||||
return data?moment(new Date(data)).format("YYYY-MM-DD HH:mm:ss"):"";
|
||||
return data?moment(data).format("YYYY-MM-DD HH:mm:ss"):"";
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -145,7 +145,7 @@ $(function() {
|
||||
"data": 'handleTime',
|
||||
"width":'20%',
|
||||
"render": function ( data, type, row ) {
|
||||
return data?moment(new Date(data)).format("YYYY-MM-DD HH:mm:ss"):"";
|
||||
return data?moment(data).format("YYYY-MM-DD HH:mm:ss"):"";
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -187,6 +187,12 @@ $(function() {
|
||||
}*/
|
||||
//return temp;
|
||||
|
||||
var logKillDiv = '';
|
||||
if(row.handleCode == 0){
|
||||
logKillDiv = ' <li class="divider"></li>\n' +
|
||||
' <li><a href="javascript:void(0);" class="logKill" _id="'+ row.id +'" >'+ I18n.joblog_kill_log +'</a></li>\n';
|
||||
}
|
||||
|
||||
var html = '<div class="btn-group">\n' +
|
||||
' <button type="button" class="btn btn-primary btn-sm">'+ I18n.system_opt +'</button>\n' +
|
||||
' <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">\n' +
|
||||
@ -195,8 +201,7 @@ $(function() {
|
||||
' </button>\n' +
|
||||
' <ul class="dropdown-menu" role="menu" _id="'+ row.id +'" >\n' +
|
||||
' <li><a href="javascript:void(0);" class="logDetail" _id="'+ row.id +'" >'+ I18n.joblog_rolling_log +'</a></li>\n' +
|
||||
' <li class="divider"></li>\n' +
|
||||
' <li><a href="javascript:void(0);" class="logKill" _id="'+ row.id +'" >'+ I18n.joblog_kill_log +'</a></li>\n' +
|
||||
logKillDiv +
|
||||
' </ul>\n' +
|
||||
' </div>';
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ $(function(){
|
||||
if (data.code == "200") {
|
||||
layer.msg( I18n.login_success );
|
||||
setTimeout(function(){
|
||||
window.location.href = base_url;
|
||||
window.location.href = base_url + "/";
|
||||
}, 500);
|
||||
} else {
|
||||
layer.open({
|
||||
|
||||
@ -33,7 +33,7 @@ $(function() {
|
||||
},
|
||||
{
|
||||
"data": 'password',
|
||||
"visible" : true,
|
||||
"visible" : false,
|
||||
"width":'20%',
|
||||
"render": function ( data, type, row ) {
|
||||
return '*********';
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
options = $.extend({}, $.fn.cronGen.defaultOptions, options);
|
||||
//create top menu
|
||||
var cronContainer = $("<div/>", { id: "CronContainer", style: "display:none;width:300px;height:300px;" });
|
||||
var mainDiv = $("<div/>", { id: "CronGenMainDiv", style: "width:410px;height:300px;" });
|
||||
var mainDiv = $("<div/>", { id: "CronGenMainDiv", style: "width:410px;height:420px;" });
|
||||
var topMenu = $("<ul/>", { "class": "nav nav-tabs", id: "CronGenTabs" });
|
||||
$('<li/>', { 'class': 'active' }).html($('<a id="SecondlyTab" href="#Secondly">秒</a>')).appendTo(topMenu);
|
||||
$('<li/>').html($('<a id="MinutesTab" href="#Minutes">分钟</a>')).appendTo(topMenu);
|
||||
@ -318,9 +318,12 @@
|
||||
// resultsName = $(this).prop("id");
|
||||
// $(this).prop("name", resultsName);
|
||||
|
||||
var runTime = '<br style="padding-top: 10px"><label>最近运行时间: </label></br><textarea id="runTime" rows="6" style="width: 90%;resize: none;background: none;border: none;outline: none;" readonly = readonly></textarea></div>';
|
||||
|
||||
$(span12).appendTo(row);
|
||||
$(row).appendTo(container);
|
||||
$(container).appendTo(mainDiv);
|
||||
$(runTime).appendTo(mainDiv);
|
||||
$(cronContainer).append(mainDiv);
|
||||
|
||||
var that = $(this);
|
||||
@ -351,9 +354,13 @@
|
||||
return $(cronContainer).html();
|
||||
},
|
||||
template: '<div class="popover" style="max-width:500px !important; width:425px;left:-341.656px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>',
|
||||
sanitize:false,
|
||||
placement: options.direction
|
||||
|
||||
}).on('click', function (e) {
|
||||
if (inputElement.val().trim() !== '') {
|
||||
refreshRunTime();
|
||||
}
|
||||
e.preventDefault();
|
||||
|
||||
//fillDataOfMinutesAndHoursSelectOptions();
|
||||
@ -374,6 +381,7 @@
|
||||
});
|
||||
$("#CronGenMainDiv select,input").change(function (e) {
|
||||
generate();
|
||||
refreshRunTime();
|
||||
});
|
||||
$("#CronGenMainDiv input").focus(function (e) {
|
||||
generate();
|
||||
@ -628,6 +636,25 @@
|
||||
displayElement.val(results);
|
||||
};
|
||||
|
||||
var refreshRunTime = function () {
|
||||
$.ajax({
|
||||
type : 'GET',
|
||||
url : base_url + "/jobinfo/nextTriggerTime",
|
||||
data : {
|
||||
"scheduleType" : 'CRON',
|
||||
"scheduleConf" : inputElement.val()
|
||||
},
|
||||
dataType : "json",
|
||||
success : function(data){
|
||||
if (data.code === 200) {
|
||||
$('#runTime').val(data.content.join("\n"));
|
||||
} else {
|
||||
$('#runTime').val(data.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
|
||||
(function($) {
|
||||
@ -1011,12 +1038,12 @@
|
||||
//获取参数中表达式的值
|
||||
if (cronExpress) {
|
||||
var regs = cronExpress.split(' ');
|
||||
$("input[name=secondHidden]").val(regs[0]);
|
||||
$("input[name=minHidden]").val(regs[1]);
|
||||
$("input[name=hourHidden]").val(regs[2]);
|
||||
$("input[name=dayHidden]").val(regs[3]);
|
||||
$("input[name=monthHidden]").val(regs[4]);
|
||||
$("input[name=weekHidden]").val(regs[5]);
|
||||
$("#secondHidden").val(regs[0]);
|
||||
$("#minHidden").val(regs[1]);
|
||||
$("#hourHidden").val(regs[2]);
|
||||
$("#dayHidden").val(regs[3]);
|
||||
$("#monthHidden").val(regs[4]);
|
||||
$("#weekHidden").val(regs[5]);
|
||||
|
||||
$.fn.cronGen.tools.initObj(regs[0], "second");
|
||||
$.fn.cronGen.tools.initObj(regs[1], "min");
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
options = $.extend({}, $.fn.cronGen.defaultOptions, options);
|
||||
//create top menu
|
||||
var cronContainer = $("<div/>", { id: "CronContainer", style: "display:none;width:300px;height:300px;" });
|
||||
var mainDiv = $("<div/>", { id: "CronGenMainDiv", style: "width:410px;height:300px;" });
|
||||
var mainDiv = $("<div/>", { id: "CronGenMainDiv", style: "width:410px;height:420px;" });
|
||||
var topMenu = $("<ul/>", { "class": "nav nav-tabs", id: "CronGenTabs" });
|
||||
$('<li/>', { 'class': 'active' }).html($('<a id="SecondlyTab" href="#Secondly">秒</a>')).appendTo(topMenu);
|
||||
$('<li/>').html($('<a id="MinutesTab" href="#Minutes">Minute</a>')).appendTo(topMenu);
|
||||
@ -318,9 +318,12 @@
|
||||
// resultsName = $(this).prop("id");
|
||||
// $(this).prop("name", resultsName);
|
||||
|
||||
var runTime = '<br style="padding-top: 10px"><label>Recent Run Time: </label></br><textarea id="runTime" rows="6" style="width: 90%;resize: none;background: none;border: none;outline: none;" readonly = readonly></textarea></div>';
|
||||
|
||||
$(span12).appendTo(row);
|
||||
$(row).appendTo(container);
|
||||
$(container).appendTo(mainDiv);
|
||||
$(runTime).appendTo(mainDiv);
|
||||
$(cronContainer).append(mainDiv);
|
||||
|
||||
var that = $(this);
|
||||
@ -351,9 +354,13 @@
|
||||
return $(cronContainer).html();
|
||||
},
|
||||
template: '<div class="popover" style="max-width:500px !important; width:425px;left:-341.656px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>',
|
||||
sanitize:false,
|
||||
placement: options.direction
|
||||
|
||||
}).on('click', function (e) {
|
||||
if (inputElement.val().trim() !== '') {
|
||||
refreshRunTime();
|
||||
}
|
||||
e.preventDefault();
|
||||
|
||||
//fillDataOfMinutesAndHoursSelectOptions();
|
||||
@ -374,6 +381,7 @@
|
||||
});
|
||||
$("#CronGenMainDiv select,input").change(function (e) {
|
||||
generate();
|
||||
refreshRunTime();
|
||||
});
|
||||
$("#CronGenMainDiv input").focus(function (e) {
|
||||
generate();
|
||||
@ -628,6 +636,25 @@
|
||||
displayElement.val(results);
|
||||
};
|
||||
|
||||
var refreshRunTime = function () {
|
||||
$.ajax({
|
||||
type : 'GET',
|
||||
url : base_url + "/jobinfo/nextTriggerTime",
|
||||
data : {
|
||||
"scheduleType" : 'CRON',
|
||||
"scheduleConf" : inputElement.val()
|
||||
},
|
||||
dataType : "json",
|
||||
success : function(data){
|
||||
if (data.code === 200) {
|
||||
$('#runTime').val(data.content.join("\n"));
|
||||
} else {
|
||||
$('#runTime').val(data.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
|
||||
(function($) {
|
||||
@ -1011,12 +1038,12 @@
|
||||
//获取参数中表达式的值
|
||||
if (cronExpress) {
|
||||
var regs = cronExpress.split(' ');
|
||||
$("input[name=secondHidden]").val(regs[0]);
|
||||
$("input[name=minHidden]").val(regs[1]);
|
||||
$("input[name=hourHidden]").val(regs[2]);
|
||||
$("input[name=dayHidden]").val(regs[3]);
|
||||
$("input[name=monthHidden]").val(regs[4]);
|
||||
$("input[name=weekHidden]").val(regs[5]);
|
||||
$("#secondHidden").val(regs[0]);
|
||||
$("#minHidden").val(regs[1]);
|
||||
$("#hourHidden").val(regs[2]);
|
||||
$("#dayHidden").val(regs[3]);
|
||||
$("#monthHidden").val(regs[4]);
|
||||
$("#weekHidden").val(regs[5]);
|
||||
|
||||
$.fn.cronGen.tools.initObj(regs[0], "second");
|
||||
$.fn.cronGen.tools.initObj(regs[1], "min");
|
||||
|
||||
@ -34,9 +34,9 @@
|
||||
</#macro>
|
||||
|
||||
<#macro commonScript>
|
||||
<!-- jQuery 2.1.4 -->
|
||||
<!-- jQuery -->
|
||||
<script src="${request.contextPath}/static/adminlte/bower_components/jquery/jquery.min.js"></script>
|
||||
<!-- Bootstrap 3.3.5 -->
|
||||
<!-- Bootstrap -->
|
||||
<script src="${request.contextPath}/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js"></script>
|
||||
<!-- FastClick -->
|
||||
<script src="${request.contextPath}/static/adminlte/bower_components/fastclick/fastclick.js"></script>
|
||||
|
||||
@ -28,13 +28,13 @@
|
||||
<div class="col-xs-3">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">AppName</span>
|
||||
<input type="text" class="form-control" id="appname" autocomplete="on" placeholder="${I18n.system_please_input}AppName" >
|
||||
<input type="text" class="form-control" id="appname" placeholder="${I18n.system_please_input}AppName" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">${I18n.jobgroup_field_title}</span>
|
||||
<input type="text" class="form-control" id="title" autocomplete="on" placeholder="${I18n.jobgroup_field_title}" >
|
||||
<input type="text" class="form-control" id="title" placeholder="${I18n.jobgroup_field_title}" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
@ -70,6 +70,25 @@
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<!-- 注册列表查看.模态框 -->
|
||||
<div class="modal fade" id="showRegistryListModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title" >${I18n.jobinfo_opt_registryinfo}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="data" style="word-wrap: break-word;"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="text-center" >
|
||||
<button type="button" class="btn btn-info ok" data-dismiss="modal" >${I18n.system_ok}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 新增.模态框 -->
|
||||
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog ">
|
||||
@ -98,7 +117,7 @@
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobgroup_field_registryList}<font color="red">*</font></label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="textarea" name="addressList" maxlength="512" placeholder="${I18n.jobgroup_field_registryList_placeholder}" readonly="readonly" style="background-color:#eee; width: 100%; height: 100px; font-size: 14px; line-height: 15px; border: 1px solid #dddddd; padding: 5px;"></textarea>
|
||||
<textarea class="textarea" name="addressList" maxlength="20000" placeholder="${I18n.jobgroup_field_registryList_placeholder}" readonly="readonly" style="background-color:#eee; width: 100%; height: 100px; font-size: 14px; line-height: 15px; border: 1px solid #dddddd; padding: 5px;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
@ -142,7 +161,7 @@
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobgroup_field_registryList}<font color="red">*</font></label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="textarea" name="addressList" maxlength="512" placeholder="${I18n.jobgroup_field_registryList_placeholder}" readonly="readonly" style="background-color:#eee; width: 100%; height: 100px; font-size: 14px; line-height: 15px; border: 1px solid #dddddd; padding: 5px;"></textarea>
|
||||
<textarea class="textarea" name="addressList" maxlength="20000" placeholder="${I18n.jobgroup_field_registryList_placeholder}" readonly="readonly" style="background-color:#eee; width: 100%; height: 100px; font-size: 14px; line-height: 15px; border: 1px solid #dddddd; padding: 5px;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
@ -46,17 +46,17 @@
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="jobDesc" autocomplete="on" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}" >
|
||||
<input type="text" class="form-control" id="jobDesc" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="executorHandler" autocomplete="on" placeholder="${I18n.system_please_input}JobHandler" >
|
||||
<input type="text" class="form-control" id="executorHandler" placeholder="${I18n.system_please_input}JobHandler" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="author" autocomplete="on" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_author}" >
|
||||
<input type="text" class="form-control" id="author" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_author}" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1">
|
||||
@ -80,9 +80,9 @@
|
||||
<th name="id" >${I18n.jobinfo_field_id}</th>
|
||||
<th name="jobGroup" >${I18n.jobinfo_field_jobgroup}</th>
|
||||
<th name="jobDesc" >${I18n.jobinfo_field_jobdesc}</th>
|
||||
<th name="scheduleType" >${I18n.schedule_type}</th>
|
||||
<th name="glueType" >${I18n.jobinfo_field_gluetype}</th>
|
||||
<th name="executorParam" >${I18n.jobinfo_field_executorparam}</th>
|
||||
<th name="jobCron" >Cron</th>
|
||||
<th name="executorParam" >${I18n.jobinfo_field_executorparam}</th>
|
||||
<th name="addTime" >addTime</th>
|
||||
<th name="updateTime" >updateTime</th>
|
||||
<th name="author" >${I18n.jobinfo_field_author}</th>
|
||||
@ -114,6 +114,8 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal form" role="form" >
|
||||
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_base}</p> <#-- 基础信息 -->
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_jobgroup}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
@ -123,11 +125,74 @@
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_jobdesc}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorRouteStrategy}<font color="red">*</font></label>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_author}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_author}" maxlength="50" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_schedule}</p> <#-- 调度 -->
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.schedule_type}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control scheduleType" name="scheduleType" >
|
||||
<#list ScheduleTypeEnum as item>
|
||||
<option value="${item}" <#if 'CRON' == item >selected</#if> >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="scheduleConf" />
|
||||
<div class="schedule_conf schedule_conf_NONE" style="display: none" >
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_CRON" >
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_CRON" placeholder="${I18n.system_please_input}Cron" maxlength="128" ></div>
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_FIX_RATE" style="display: none" >
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.schedule_type_fix_rate}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_FIX_RATE" placeholder="${I18n.system_please_input} ( Second )" maxlength="10" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_FIX_DELAY" style="display: none" >
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.schedule_type_fix_delay}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_FIX_DELAY" placeholder="${I18n.system_please_input} ( Second )" maxlength="10" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_job}</p> <#-- 任务配置 -->
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_gluetype}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control glueType" name="glueType" >
|
||||
<#list GlueTypeEnum as item>
|
||||
<option value="${item}" >${item.desc}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorHandler" placeholder="${I18n.system_please_input}JobHandler" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorparam}<font color="black">*</font></label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="textarea form-control" name="executorParam" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_executorparam}" maxlength="512" style="height: 63px; line-height: 1.2;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_advanced}</p> <#-- 高级配置 -->
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorRouteStrategy}<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorRouteStrategy" >
|
||||
<#list ExecutorRouteStrategyEnum as item>
|
||||
@ -135,23 +200,22 @@
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="${I18n.system_please_input}Cron" maxlength="128" ></div>
|
||||
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_childJobId}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobId" placeholder="${I18n.jobinfo_field_childJobId_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_gluetype}<font color="red">*</font></label>
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.misfire_strategy}<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control glueType" name="glueType" >
|
||||
<#list GlueTypeEnum as item>
|
||||
<option value="${item}" >${item.desc}</option>
|
||||
</#list>
|
||||
<select class="form-control" name="misfireStrategy" >
|
||||
<#list MisfireStrategyEnum as item>
|
||||
<option value="${item}" <#if 'DO_NOTHING' == item >selected</#if> >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorHandler" placeholder="${I18n.system_please_input}JobHandler" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorBlockStrategy}<font color="red">*</font></label>
|
||||
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorBlockStrategy}<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorBlockStrategy" >
|
||||
<#list ExecutorBlockStrategyEnum as item>
|
||||
@ -159,26 +223,13 @@
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_childJobId}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobId" placeholder="${I18n.jobinfo_field_childJobId_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_timeout}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorTimeout" placeholder="${I18n.jobinfo_field_executorTimeout_placeholder}" maxlength="6" ></div>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorTimeout" placeholder="${I18n.jobinfo_field_executorTimeout_placeholder}" maxlength="6" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailRetryCount}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_author}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_author}" maxlength="50" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorparam}<font color="black">*</font></label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="textarea form-control" name="executorParam" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_executorparam}" maxlength="512" style="height: 63px; line-height: 1.2;"></textarea>
|
||||
</div>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
@ -194,16 +245,14 @@
|
||||
<textarea class="glueSource_java" style="display:none;" >
|
||||
package com.xxl.job.service.handler;
|
||||
|
||||
import com.xxl.job.core.log.XxlJobLogger;
|
||||
import com.xxl.job.core.biz.model.ReturnT;
|
||||
import com.xxl.job.core.context.XxlJobHelper;
|
||||
import com.xxl.job.core.handler.IJobHandler;
|
||||
|
||||
public class DemoGlueJobHandler extends IJobHandler {
|
||||
|
||||
@Override
|
||||
public ReturnT<String> execute(String param) throws Exception {
|
||||
XxlJobLogger.log("XXL-JOB, Hello World.");
|
||||
return ReturnT.SUCCESS;
|
||||
public void execute() throws Exception {
|
||||
XxlJobHelper.log("XXL-JOB, Hello World.");
|
||||
}
|
||||
|
||||
}
|
||||
@ -310,71 +359,122 @@ exit 0
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal form" role="form" >
|
||||
<div class="form-group">
|
||||
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_base}</p> <#-- 基础信息 -->
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_jobgroup}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="jobGroup" >
|
||||
<#list JobGroupList as group>
|
||||
<option value="${group.id}" >${group.title}</option>
|
||||
</#list>
|
||||
<#list JobGroupList as group>
|
||||
<option value="${group.id}" >${group.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_jobdesc}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorRouteStrategy}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorRouteStrategy" >
|
||||
<#list ExecutorRouteStrategyEnum as item>
|
||||
<option value="${item}" >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="${I18n.system_please_input}Cron" maxlength="128" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_gluetype}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control glueType" name="glueType" disabled >
|
||||
<#list GlueTypeEnum as item>
|
||||
<option value="${item}" >${item.desc}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorHandler" placeholder="${I18n.system_please_input}JobHandler" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorBlockStrategy}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorBlockStrategy" >
|
||||
<#list ExecutorBlockStrategyEnum as item>
|
||||
<option value="${item}" >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_childJobId}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobId" placeholder="${I18n.jobinfo_field_childJobId_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_timeout}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorTimeout" placeholder="${I18n.jobinfo_field_executorTimeout_placeholder}" maxlength="6" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailRetryCount}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_author}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_author}" maxlength="50" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_alarmemail}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="${I18n.jobinfo_field_alarmemail_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_schedule}</p> <#-- 调度配置 -->
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.schedule_type}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control scheduleType" name="scheduleType" >
|
||||
<#list ScheduleTypeEnum as item>
|
||||
<option value="${item}" >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="scheduleConf" />
|
||||
<div class="schedule_conf schedule_conf_NONE" style="display: none" >
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_CRON" >
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_CRON" placeholder="${I18n.system_please_input}Cron" maxlength="128" ></div>
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_FIX_RATE" style="display: none" >
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.schedule_type_fix_rate}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_FIX_RATE" placeholder="${I18n.system_please_input} ( Second )" maxlength="10" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
<div class="schedule_conf schedule_conf_FIX_DELAY" style="display: none" >
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.schedule_type_fix_delay}<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="schedule_conf_FIX_DELAY" placeholder="${I18n.system_please_input} ( Second )" maxlength="10" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_job}</p> <#-- 任务配置 -->
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_gluetype}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control glueType" name="glueType" disabled >
|
||||
<#list GlueTypeEnum as item>
|
||||
<option value="${item}" >${item.desc}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
<label for="firstname" class="col-sm-2 control-label">JobHandler<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorHandler" placeholder="${I18n.system_please_input}JobHandler" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorparam}<font color="black">*</font></label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="textarea form-control" name="executorParam" placeholder="${I18n.system_please_input}${I18n.jobinfo_field_executorparam}" maxlength="512" style="height: 63px; line-height: 1.2;"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<p style="margin: 0 0 10px;text-align: left;border-bottom: 1px solid #e5e5e5;color: gray;">${I18n.jobinfo_conf_advanced}</p> <#-- 高级配置 -->
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorRouteStrategy}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorRouteStrategy" >
|
||||
<#list ExecutorRouteStrategyEnum as item>
|
||||
<option value="${item}" >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_childJobId}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="childJobId" placeholder="${I18n.jobinfo_field_childJobId_placeholder}" maxlength="100" ></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.misfire_strategy}<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="misfireStrategy" >
|
||||
<#list MisfireStrategyEnum as item>
|
||||
<option value="${item}" <#if 'DO_NOTHING' == item >selected</#if> >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<label for="firstname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorBlockStrategy}<font color="red">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="executorBlockStrategy" >
|
||||
<#list ExecutorBlockStrategyEnum as item>
|
||||
<option value="${item}" >${item.title}</option>
|
||||
</#list>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_timeout}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorTimeout" placeholder="${I18n.jobinfo_field_executorTimeout_placeholder}" maxlength="6" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
<label for="lastname" class="col-sm-2 control-label">${I18n.jobinfo_field_executorFailRetryCount}<font color="black">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorFailRetryCount" placeholder="${I18n.jobinfo_field_executorFailRetryCount_placeholder}" maxlength="4" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" ></div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
@ -48,7 +48,6 @@
|
||||
<pre style="font-size:12px;position:relative;" >
|
||||
<div id="logConsole"></div>
|
||||
<li class="fa fa-refresh fa-spin" style="font-size: 20px;float: left;" id="logConsoleRunning" ></li>
|
||||
<div><hr><hr></div>
|
||||
</pre>
|
||||
</section>
|
||||
</div>
|
||||
@ -63,8 +62,6 @@
|
||||
// 参数
|
||||
var triggerCode = '${triggerCode}';
|
||||
var handleCode = '${handleCode}';
|
||||
var executorAddress = '${executorAddress!}';
|
||||
var triggerTime = '${triggerTime?c}';
|
||||
var logId = '${logId}';
|
||||
</script>
|
||||
<script src="${request.contextPath}/static/js/joblog.detail.1.js"></script>
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-xs-1">
|
||||
<button class="btn btn-block btn-nomal" id="clearLog">${I18n.joblog_clean}</button>
|
||||
<button class="btn btn-block btn-default" id="clearLog">${I18n.joblog_clean}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -123,7 +123,7 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal form" role="form" >
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"">${I18n.jobinfo_field_jobgroup}:</label>
|
||||
<label class="col-sm-3 control-label">${I18n.jobinfo_field_jobgroup}:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control jobGroupText" readonly >
|
||||
<input type="hidden" name="jobGroup" >
|
||||
@ -131,7 +131,7 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"">${I18n.jobinfo_job}:</label>
|
||||
<label class="col-sm-3 control-label">${I18n.jobinfo_job}:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control jobIdText" readonly >
|
||||
<input type="hidden" name="jobId" >
|
||||
@ -139,7 +139,7 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"">${I18n.joblog_clean_type}:</label>
|
||||
<label class="col-sm-3 control-label">${I18n.joblog_clean_type}:</label>
|
||||
<div class="col-sm-9">
|
||||
<select class="form-control" name="type" >
|
||||
<option value="1" >${I18n.joblog_clean_type_1}</option>
|
||||
|
||||
Reference in New Issue
Block a user