重要功能推送:支持子任务依赖;
This commit is contained in:
parent
34c54e5586
commit
8048b0c78c
|
@ -161,6 +161,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
|
||||||
`glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
|
`glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
|
||||||
`glue_source` text COMMENT 'GLUE源代码',
|
`glue_source` text COMMENT 'GLUE源代码',
|
||||||
`glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
|
`glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
|
||||||
|
`child_jobkey` varchar(255) DEFAULT NULL COMMENT '子任务Key',
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
|
@ -41,19 +41,20 @@ public class JobInfoController {
|
||||||
@RequestMapping("/add")
|
@RequestMapping("/add")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
|
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark) {
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark,
|
||||||
|
String childJobKey) {
|
||||||
|
|
||||||
return xxlJobService.add(jobGroup, jobCron, jobDesc, author, alarmEmail,
|
return xxlJobService.add(jobGroup, jobCron, jobDesc, author, alarmEmail,
|
||||||
executorAddress, executorHandler, executorParam, glueSwitch, glueSource, glueRemark);
|
executorAddress, executorHandler, executorParam, glueSwitch, glueSource, glueRemark, childJobKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/reschedule")
|
@RequestMapping("/reschedule")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch) {
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
|
||||||
|
|
||||||
return xxlJobService.reschedule(jobGroup, jobName, jobCron, jobDesc, author, alarmEmail,
|
return xxlJobService.reschedule(jobGroup, jobName, jobCron, jobDesc, author, alarmEmail,
|
||||||
executorAddress, executorHandler, executorParam, glueSwitch);
|
executorAddress, executorHandler, executorParam, glueSwitch, childJobKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/remove")
|
@RequestMapping("/remove")
|
||||||
|
|
|
@ -1,23 +1,31 @@
|
||||||
package com.xxl.job.admin.core.callback;
|
package com.xxl.job.admin.core.callback;
|
||||||
|
|
||||||
|
import com.xxl.job.admin.core.model.ReturnT;
|
||||||
|
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||||
import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
|
import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
|
||||||
import com.xxl.job.core.router.model.RequestModel;
|
import com.xxl.job.core.router.model.RequestModel;
|
||||||
import com.xxl.job.core.router.model.ResponseModel;
|
import com.xxl.job.core.router.model.ResponseModel;
|
||||||
import com.xxl.job.core.util.XxlJobNetCommUtil;
|
import com.xxl.job.core.util.XxlJobNetCommUtil;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.eclipse.jetty.server.Request;
|
import org.eclipse.jetty.server.Request;
|
||||||
import org.eclipse.jetty.server.handler.AbstractHandler;
|
import org.eclipse.jetty.server.handler.AbstractHandler;
|
||||||
|
import org.quartz.SchedulerException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by xuxueli on 2016-5-22 11:15:42
|
* Created by xuxueli on 2016-5-22 11:15:42
|
||||||
*/
|
*/
|
||||||
public class XxlJobLogCallbackServerHandler extends AbstractHandler {
|
public class XxlJobLogCallbackServerHandler extends AbstractHandler {
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(XxlJobLogCallbackServerHandler.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
|
public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
|
||||||
|
@ -33,6 +41,31 @@ public class XxlJobLogCallbackServerHandler extends AbstractHandler {
|
||||||
ResponseModel responseModel = null;
|
ResponseModel responseModel = null;
|
||||||
XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(requestModel.getLogId());
|
XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(requestModel.getLogId());
|
||||||
if (log!=null) {
|
if (log!=null) {
|
||||||
|
|
||||||
|
// trigger success, to trigger child job, and avoid repeat trigger child job
|
||||||
|
if (!ResponseModel.SUCCESS.equals(log.getHandleStatus())) {
|
||||||
|
XxlJobInfo xxlJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
|
||||||
|
if (xxlJobInfo!=null && StringUtils.isNotBlank(xxlJobInfo.getChildJobKey())) {
|
||||||
|
String[] jobKeyArr = xxlJobInfo.getChildJobKey().split("_");
|
||||||
|
if (jobKeyArr!=null && jobKeyArr.length==2) {
|
||||||
|
XxlJobInfo childJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(jobKeyArr[0], jobKeyArr[1]);
|
||||||
|
if (childJobInfo!=null) {
|
||||||
|
try {
|
||||||
|
boolean ret = DynamicSchedulerUtil.triggerJob(childJobInfo.getJobName(), childJobInfo.getJobGroup());
|
||||||
|
|
||||||
|
// add msg
|
||||||
|
String msg = requestModel.getMsg();
|
||||||
|
msg += MessageFormat.format("<br> 触发子任务执行, jobKey:{0}, status:{1}, 描述:{2}", xxlJobInfo.getChildJobKey(), ret, childJobInfo.getJobDesc());
|
||||||
|
requestModel.setMsg(msg);
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
logger.error("", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// save log
|
||||||
log.setHandleTime(new Date());
|
log.setHandleTime(new Date());
|
||||||
log.setHandleStatus(requestModel.getStatus());
|
log.setHandleStatus(requestModel.getStatus());
|
||||||
log.setHandleMsg(requestModel.getMsg());
|
log.setHandleMsg(requestModel.getMsg());
|
||||||
|
|
|
@ -29,6 +29,8 @@ public class XxlJobInfo {
|
||||||
private String glueSource; // GLUE源代码
|
private String glueSource; // GLUE源代码
|
||||||
private String glueRemark; // GLUE备注
|
private String glueRemark; // GLUE备注
|
||||||
|
|
||||||
|
private String childJobKey; // 子任务Key
|
||||||
|
|
||||||
// copy from quartz
|
// copy from quartz
|
||||||
private String jobStatus; // 任务状态 【base on quartz】
|
private String jobStatus; // 任务状态 【base on quartz】
|
||||||
|
|
||||||
|
@ -152,6 +154,14 @@ public class XxlJobInfo {
|
||||||
this.glueRemark = glueRemark;
|
this.glueRemark = glueRemark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getChildJobKey() {
|
||||||
|
return childJobKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChildJobKey(String childJobKey) {
|
||||||
|
this.childJobKey = childJobKey;
|
||||||
|
}
|
||||||
|
|
||||||
public String getJobStatus() {
|
public String getJobStatus() {
|
||||||
return jobStatus;
|
return jobStatus;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,11 @@ public interface IXxlJobService {
|
||||||
public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
|
public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
|
||||||
|
|
||||||
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
|
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark);
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark,
|
||||||
|
String childJobKey);
|
||||||
|
|
||||||
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch);
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
|
||||||
|
|
||||||
public ReturnT<String> remove(String jobGroup, String jobName);
|
public ReturnT<String> remove(String jobGroup, String jobName);
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,8 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
|
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark) {
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark,
|
||||||
|
String childJobKey) {
|
||||||
// valid
|
// valid
|
||||||
if (JobGroupEnum.match(jobGroup) == null) {
|
if (JobGroupEnum.match(jobGroup) == null) {
|
||||||
return new ReturnT<String>(500, "请选择“任务组”");
|
return new ReturnT<String>(500, "请选择“任务组”");
|
||||||
|
@ -110,6 +111,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
||||||
jobInfo.setGlueSwitch(glueSwitch);
|
jobInfo.setGlueSwitch(glueSwitch);
|
||||||
jobInfo.setGlueSource(glueSource);
|
jobInfo.setGlueSource(glueSource);
|
||||||
jobInfo.setGlueRemark(glueRemark);
|
jobInfo.setGlueRemark(glueRemark);
|
||||||
|
jobInfo.setChildJobKey(childJobKey);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// add job 2 quartz
|
// add job 2 quartz
|
||||||
|
@ -128,7 +130,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch) {
|
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
|
||||||
|
|
||||||
// valid
|
// valid
|
||||||
if (JobGroupEnum.match(jobGroup) == null) {
|
if (JobGroupEnum.match(jobGroup) == null) {
|
||||||
|
@ -166,6 +168,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
||||||
jobInfo.setExecutorHandler(executorHandler);
|
jobInfo.setExecutorHandler(executorHandler);
|
||||||
jobInfo.setExecutorParam(executorParam);
|
jobInfo.setExecutorParam(executorParam);
|
||||||
jobInfo.setGlueSwitch(glueSwitch);
|
jobInfo.setGlueSwitch(glueSwitch);
|
||||||
|
jobInfo.setChildJobKey(childJobKey);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// fresh quartz
|
// fresh quartz
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
<result column="glue_switch" property="glueSwitch" />
|
<result column="glue_switch" property="glueSwitch" />
|
||||||
<result column="glue_source" property="glueSource" />
|
<result column="glue_source" property="glueSource" />
|
||||||
<result column="glue_remark" property="glueRemark" />
|
<result column="glue_remark" property="glueRemark" />
|
||||||
|
|
||||||
|
<result column="child_jobkey" property="childJobKey" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
|
@ -41,7 +43,8 @@
|
||||||
t.executor_param,
|
t.executor_param,
|
||||||
t.glue_switch,
|
t.glue_switch,
|
||||||
t.glue_source,
|
t.glue_source,
|
||||||
t.glue_remark
|
t.glue_remark,
|
||||||
|
t.child_jobkey
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
|
<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
|
||||||
|
@ -87,7 +90,8 @@
|
||||||
executor_param,
|
executor_param,
|
||||||
glue_switch,
|
glue_switch,
|
||||||
glue_source,
|
glue_source,
|
||||||
glue_remark
|
glue_remark,
|
||||||
|
child_jobkey
|
||||||
) VALUES (
|
) VALUES (
|
||||||
#{jobGroup},
|
#{jobGroup},
|
||||||
#{jobName},
|
#{jobName},
|
||||||
|
@ -102,7 +106,8 @@
|
||||||
#{executorParam},
|
#{executorParam},
|
||||||
#{glueSwitch},
|
#{glueSwitch},
|
||||||
#{glueSource},
|
#{glueSource},
|
||||||
#{glueRemark}
|
#{glueRemark},
|
||||||
|
#{childJobKey}
|
||||||
);
|
);
|
||||||
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
|
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
|
||||||
SELECT LAST_INSERT_ID()
|
SELECT LAST_INSERT_ID()
|
||||||
|
@ -129,7 +134,8 @@
|
||||||
executor_param = #{executorParam},
|
executor_param = #{executorParam},
|
||||||
glue_switch = #{glueSwitch},
|
glue_switch = #{glueSwitch},
|
||||||
glue_source = #{glueSource},
|
glue_source = #{glueSource},
|
||||||
glue_remark = #{glueRemark}
|
glue_remark = #{glueRemark},
|
||||||
|
child_jobkey = #{childJobKey}
|
||||||
WHERE job_group = #{jobGroup}
|
WHERE job_group = #{jobGroup}
|
||||||
AND job_name = #{jobName}
|
AND job_name = #{jobName}
|
||||||
</update>
|
</update>
|
||||||
|
|
|
@ -168,7 +168,7 @@
|
||||||
<#macro commonFooter >
|
<#macro commonFooter >
|
||||||
<footer class="main-footer">
|
<footer class="main-footer">
|
||||||
<div class="pull-right hidden-xs">
|
<div class="pull-right hidden-xs">
|
||||||
<b>Version</b> 1.3
|
<b>Version</b> 1.4
|
||||||
</div>
|
</div>
|
||||||
<strong>Copyright © 2015-${.now?string('yyyy')}
|
<strong>Copyright © 2015-${.now?string('yyyy')}
|
||||||
<a href="https://github.com/xuxueli/xxl-job" target="_blank" >github</a>
|
<a href="https://github.com/xuxueli/xxl-job" target="_blank" >github</a>
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
<th name="id" >id</th>
|
<th name="id" >id</th>
|
||||||
<th name="jobGroup" >jobGroup</th>
|
<th name="jobGroup" >jobGroup</th>
|
||||||
<th name="jobName" >jobName</th>
|
<th name="jobName" >jobName</th>
|
||||||
|
<th name="childJobKey" >任务Key</th>
|
||||||
<th name="jobDesc" >描述</th>
|
<th name="jobDesc" >描述</th>
|
||||||
<th name="jobCron" >Cron</th>
|
<th name="jobCron" >Cron</th>
|
||||||
<th name="executorAddress" >执行器地址</th>
|
<th name="executorAddress" >执行器地址</th>
|
||||||
|
@ -148,6 +149,10 @@
|
||||||
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
||||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||||
|
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key" maxlength="100" ></div>
|
||||||
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-3 col-sm-6">
|
<div class="col-sm-offset-3 col-sm-6">
|
||||||
|
@ -219,13 +224,16 @@ public class DemoJobHandler extends IJobHandler {
|
||||||
<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
|
<label for="firstname" class="col-sm-2 control-label">执行参数<font color="black">*</font></label>
|
||||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
|
<div class="col-sm-4"><input type="text" class="form-control" name="executorParam" placeholder="请输入“执行参数”" maxlength="100" ></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
|
<label for="lastname" class="col-sm-2 control-label">报警邮件<font color="red">*</font></label>
|
||||||
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
|
<div class="col-sm-4"><input type="text" class="form-control" name="alarmEmail" placeholder="请输入“报警邮件”,多个邮件地址逗号分隔" maxlength="100" ></div>
|
||||||
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
<label for="lastname" class="col-sm-2 control-label">负责人<font color="red">*</font></label>
|
||||||
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
<div class="col-sm-4"><input type="text" class="form-control" name="author" placeholder="请输入“负责人”" maxlength="50" ></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="lastname" class="col-sm-2 control-label">子任务Key<font color="black">*</font></label>
|
||||||
|
<div class="col-sm-4"><input type="text" class="form-control" name="childJobKey" placeholder="请输入子任务的任务Key" maxlength="100" ></div>
|
||||||
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-3 col-sm-6">
|
<div class="col-sm-offset-3 col-sm-6">
|
||||||
|
|
|
@ -35,6 +35,14 @@ $(function() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ "data": 'jobName', "visible" : false},
|
{ "data": 'jobName', "visible" : false},
|
||||||
|
{
|
||||||
|
"data": 'childJobKey',
|
||||||
|
"visible" : true,
|
||||||
|
"render": function ( data, type, row ) {
|
||||||
|
var jobKey = row.jobGroup + "_" + row.jobName;
|
||||||
|
return jobKey;
|
||||||
|
}
|
||||||
|
},
|
||||||
{ "data": 'jobDesc', "visible" : true},
|
{ "data": 'jobDesc', "visible" : true},
|
||||||
{ "data": 'jobCron', "visible" : true},
|
{ "data": 'jobCron', "visible" : true},
|
||||||
{ "data": 'executorAddress', "visible" : false},
|
{ "data": 'executorAddress', "visible" : false},
|
||||||
|
@ -103,6 +111,7 @@ $(function() {
|
||||||
' executorHandler="'+row.executorHandler +'" '+
|
' executorHandler="'+row.executorHandler +'" '+
|
||||||
' executorParam="'+ row.executorParam +'" '+
|
' executorParam="'+ row.executorParam +'" '+
|
||||||
' glueSwitch="'+ row.glueSwitch +'" '+
|
' glueSwitch="'+ row.glueSwitch +'" '+
|
||||||
|
' childJobKey="'+ row.childJobKey +'" '+
|
||||||
'>'+
|
'>'+
|
||||||
'<button class="btn btn-primary btn-xs job_operate" type="job_trigger" type="button">执行</button> '+
|
'<button class="btn btn-primary btn-xs job_operate" type="job_trigger" type="button">执行</button> '+
|
||||||
pause_resume +
|
pause_resume +
|
||||||
|
@ -284,6 +293,8 @@ $(function() {
|
||||||
addModalValidate.resetForm();
|
addModalValidate.resetForm();
|
||||||
$("#addModal .form .form-group").removeClass("has-error");
|
$("#addModal .form .form-group").removeClass("has-error");
|
||||||
$(".remote_panel").show(); // remote
|
$(".remote_panel").show(); // remote
|
||||||
|
|
||||||
|
$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
|
||||||
});
|
});
|
||||||
|
|
||||||
// GLUE模式开启
|
// GLUE模式开启
|
||||||
|
@ -314,6 +325,7 @@ $(function() {
|
||||||
$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
|
$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
|
||||||
$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
|
$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
|
||||||
$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
|
$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
|
||||||
|
$("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
|
||||||
|
|
||||||
// jobGroupTitle
|
// jobGroupTitle
|
||||||
var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
|
var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
|
||||||
|
|
Loading…
Reference in New Issue